¿SQLBulkCopy aumenta dramáticamente el tamaño del archivo .mdf?

sqlbulkcopy sql-server

Pregunta

Estoy usando la clase SqlBulkCopy para hacer una inserción masiva en una base de datos SQLServer.

El tamaño original del archivo .mdf asociado con la base de datos es de 1508 Mb.

Cuando lo ejecuto (en los mismos datos de aproximadamente 4 millones de registros) con:
Tamaño de lote de 100000, el tamaño del .mdf crece hasta 1661 MB.
Tamaño de lote de 1000000, el tamaño del .mdf aumenta a 1659 MB.

¿Por qué esta variación? Una variación tan pequeña es insignificante, a excepción de que cuando mi Probador lo ejecuta (en los mismos datos) con un tamaño de lote de 100, el archivo .mdf crece increíblemente hasta que utiliza todos los 20 conciertos disponibles, y luego Errores por falta de espacio disponible.

¿Es esto porque SqlBulkCopy tiene algunos bloques de tamaño fijo que asigna?
Está funcionando bien con BatchSizes> 100000, pero quiero entender la causa raíz de este extraño comportamiento / error.

Respuesta popular

Su archivo mdf es donde se almacenan sus datos; debería crecer aproximadamente de acuerdo con su carga de datos. Pero como "ck" ya señaló, SQL Server le permite especificar un cierto patrón de crecimiento, por ejemplo, el archivo mdf no crece byte a byte cada vez que inserta una fila. Por lo tanto, dependiendo de su configuración, tomará "saltos" en tamaño, cuando necesite más espacio.

Esto no tiene nada que ver con si carga sus datos con una instrucción INSERT regular o con SqlBulkLoad.

Bagazo



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é