Optimizar el rendimiento de la importación masiva

En este tema se describen las opciones existentes para optimizar la importación masiva de datos a una tabla de Microsoft SQL Server mediante un comando bcp, una instrucción BULK INSERT o una función OPENROWSET(BULK...) (Transact-SQL). Para realizar una importación o exportación masiva de datos lo más rápido posible es importante comprender los factores que afectan el rendimiento y los calificadores de comandos disponibles para administrar el rendimiento. Si es posible, utilice una instrucción Transact-SQL para efectuar una importación masiva de datos a SQL Server puesto que Transact-SQL es más rápido que el comando bcp.

Nota

Si desea conocer una comparación de los métodos, vea Acerca de las operaciones de importación y exportación masivas.

El método que permite obtener el mejor rendimiento de una operación de importación masiva específica viene determinado por los siguientes factores:

  • Si la tabla incluye restricciones o desencadenadores, o ambos.

  • El modelo de recuperación que utiliza la base de datos.

    Para obtener más información, vea Introducción al modelo de recuperación.

  • Si la tabla a la que se van a copiar los datos está vacía.

  • Si la tabla incluye índices.

  • Si se ha especificado la opción TABLOCK.

  • Si la tabla se copia desde un único cliente o en paralelo desde varios clientes.

  • Si la tabla se va a copiar entre dos equipos en los que se ejecute SQL Server.

Nota importanteImportante

En SQL Server 2005 y versiones posteriores, las optimizaciones de la importación masiva están disponibles cuando se habilitan los desencadenadores. El control de versiones de filas se usa para los desencadenadores y almacena las versiones de filas en el almacén de versiones, en tempdb. Antes de poder importar de forma masiva un gran lote de registros de datos usando desencadenadores, puede tener que ampliar el tamaño de tempdb para que quepan los desencadenadores en el almacén de versiones.

Para obtener información acerca de la incidencia de estos factores en los escenarios de importación masiva, vea Directrices para optimizar la importación masiva.

Métodos para optimizar la importación masiva

SQL Server incluye los siguientes métodos para agilizar la importación masiva de datos:

  • Usar un registro mínimo

    El modelo de recuperación simple registra de forma mínima la mayoría de las operaciones masivas.

    En el caso de las bases de datos que utilizan el modelo de recuperación completo, todas las operaciones de inserción de filas que se efectúan durante la importación masiva se registran por completo en el registro de transacciones. Cuando la importación es de un gran volumen de datos, esto puede causar que el registro de transacciones se llene rápidamente. Para operaciones de importaciones masivas, el registro mínimo resulta mucho más eficaz que el registro completo y reduce la posibilidad de que una operación de importación masiva ocupe todo el espacio del registro. Para registrar de forma mínima una operación de importación masiva en una base de datos que suele utilizar el modelo de recuperación completa, puede cambiar primero la base de datos al modelo de recuperación optimizado para cargas masivas de registros. Después de importar los datos de forma masiva, cambie el modelo de recuperación al modelo de recuperación completa. Para obtener más información, vea Cambiar del modelo de recuperación completa al modelo de recuperación optimizado para cargas masivas de registros.

    Nota

    Las filas insertadas se registran mínimamente si los registros de operaciones masivas optimizados son aplicables; de lo contrario, las filas insertadas se registran completamente en el registro de transacciones. Para obtener información acerca de cuándo se registran las operaciones de importación masiva y cómo realizar un registro mínimo de este tipo de operaciones, vea Operaciones que pueden ser registradas mínimamente y Requisitos previos para el registro mínimo durante la importación masiva.

  • Importar datos en paralelo desde varios clientes a una única tabla

    SQL Server permite importar los datos de forma masiva a una sola tabla desde varios clientes en paralelo. Los tres mecanismos de importación masiva admiten la importación de datos en paralelo. Esto puede mejorar el rendimiento de las operaciones de importación de datos.

    Para obtener más información, vea Importar datos en paralelo con bloqueo de tabla.

  • Usar lotes

    Para obtener información acerca del uso de lotes para importar datos y acerca de los calificadores de comando para administrarlos, vea Administrar lotes para la importación masiva.

    Nota

    La opción BULK de la cláusula OPENROWSET no admite el control del tamaño del lote.

  • Deshabilitar los desencadenadores

    Deshabilitar los desencadenadores puede mejorar el rendimiento.

    Para obtener información acerca del impacto de la ejecución de los desencadenadores en las operaciones de importación masiva y de cómo habilitarlos o deshabilitarlos, vea Controlar la ejecución de desencadenadores al importar datos masivamente.

  • Deshabilitar las restricciones

    Para obtener más información sobre el impacto de la comprobación de restricciones en las operaciones de importación masiva y sobre cómo habilitar o deshabilitar las restricciones CHECK y FOREIGN KEY de una tabla, vea Controlar comprobación de restricciones mediante operaciones de importación masiva.

  • Ordenar los datos de un archivo de datos

    De manera predeterminada, en las operaciones de importación masiva se supone que los archivos de datos no están ordenados. Si la tabla tiene un índice agrupado, bcp, la instrucción BULK INSERT y la función OPENROWSET(BULK…) (Transact-SQL) permiten especificar la ordenación de los datos del archivo durante una operación de importación masiva. El hecho de aplicar el mismo orden a los datos del archivo de datos que a los de la tabla es opcional. Sin embargo, se puede mejorar el rendimiento de la operación de importación masiva si se especifica el mismo orden en el archivo de datos que en la tabla.

    Para obtener más información, vea Controlar el criterio de ordenación en las importaciones masivas de datos.

  • CControlar el comportamiento de bloqueo

    Para obtener información acerca de cómo especificar el comportamiento de bloqueo durante las operaciones de importación masiva, vea Controlar el comportamiento de bloqueo para la importación masiva.

  • Importar datos en formato nativo

    Para obtener más información, vea Usar el formato nativo para importar o exportar datos y Usar el formato nativo Unicode para importar o exportar datos.