SqlBulkCopy: útil para conjuntos de datos más pequeños (es decir, 1000 filas)?

.net performance sqlbulkcopy

Pregunta

Antes de tomarme la molestia de implementar SqlBulkCopy y la prueba de rendimiento, me preguntaba si alguien tenía alguna orientación sobre cuándo debería usarse y si es preferible utilizar incluso en conjuntos de datos relativamente pequeños (1000 o más filas). ¿Existe alguna sobrecarga para usarlo en esta situación o debería usarlo siempre cuando inserto un número razonable de filas?

Respuesta aceptada

Probablemente lo usaría para 1000 filas, pero puedes hacer algo similar con el comando por lotes.

Tenga en cuenta que con 1000 filas, el enfoque más simple es probablemente lanzar los datos que desea en una DataTable de datos de la forma correcta, que es bastante trivial. Para conjuntos más grandes, escribir una IDataReader medida (para transmitir los registros, en lugar de almacenarlos primero en la memoria) es mi opción preferida.

La otra cosa para ver es transacciones, durabilidad, etc; Cuando uso SqlBulkCopy , tiendo a usar esto para ingresar en una tabla de preparación , y luego llamo a sproc (o simplemente a un simple comando TSQL) para enviar los datos a la tabla real. Esto mantiene la tabla real limpia a excepción de un solo INSERT basado en conjunto (y completamente registrado).

Pero si solo quiere medir el rendimiento, debería arrojarlo a la tabla real para obtener una estimación aproximada.


Respuesta popular

SqlBulkCopy no escribe en los registros de transacciones, por lo que es más rápido que insertar cada fila manualmente.

Incluso para 1000 filas, debe haber una ganancia de velocidad, especialmente si se trata de una operación de gran acceso, como la de una aplicación web.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué