SQLBulkCopy augmente-t-il considérablement la taille du fichier .mdf?

sqlbulkcopy sql-server

Question

J'utilise la classe SqlBulkCopy pour effectuer une insertion en bloc dans une base de données SQLServer.

La taille d'origine du fichier .mdf associé à la base de données est de 1508 Mo.

Quand je l'exécute (sur les mêmes données d'environ 4 millions d'enregistrements) avec:
BatchSize of 100000, la taille du fichier .mdf passe à 1661 Mo.
Taille de lot de 1000000, la taille du .mdf passe à 1659 Mo.

Pourquoi cette variation? Une si petite variation est acceptable, sauf que lorsque mon testeur l'exécute (sur les mêmes données) avec une taille de lot de 100, le fichier .mdf grossit de façon insensée jusqu'à ce qu'il utilise les 20 concerts disponibles erreurs sur, en raison du manque d'espace disponible.

Est-ce parce que SqlBulkCopy a des blocs de taille fixe qu'il alloue?
Cela fonctionne bien avec BatchSizes> 100000, mais je veux comprendre la cause fondamentale de ce comportement / bogue étrange.

Réponse populaire

Votre fichier mdf est l'endroit où vos données sont stockées - il devrait grossir approximativement en fonction de votre chargement de données. Mais comme "ck" l'a déjà indiqué - SQL Server vous permet de spécifier un certain modèle de croissance, par exemple le fichier mdf ne grandit pas octet par octet chaque fois que vous insérez une ligne. Donc, en fonction de votre réglage, il faudra des "sauts" de taille, quand il faudra plus d’espace.

Cela n'a rien à voir avec le fait que vous chargiez vos données avec une instruction INSERT normale ou avec SqlBulkLoad.

Marc



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi