質問: 私はSqlBulkCopyクラスを使用してSQLServer DBに一括挿入を行います。 DBに関連付けられた.mdfファイルの元のサイズは1508 Mbです。 私はそれを実行すると(約400万レコードの同じデータで): BatchSizeが100000の場合、.mdfのサイズは1661 MBに拡大します。 BatchSizeが1000000の場合、.mdfのサイズは1659 MBに増加します。 なぜこのバリエーションですか?このような小さなバリエーションは**、私のテスターが100のバッチサイズで(同じデータ上で)それを実行**した**とき、.mdfファイルが利用可能な20ギグすべてを使い果たすまで狂って成長し、利用可能なスペースがないためにエラーが発生します。** これは、SqlBulkCopyに割り当てられるいくつかの固定サイズのブロックがあるためですか? BatchSizes> 100000でうまく動作しますが、この奇妙な動作やバグの根本原因を理解したいと思います。
回答: mdfファイルは、データが格納されている場所です。データの負荷に応じて大きくなる必要があります。しかし、 "ck"が既に指摘しているように、SQL Serverでは特定の成長パターンを指定することができます。たとえば、行を挿入するたびにmdfファイルが1バイトずつ増加しません。だからあなたの設定に応じて、それはより多くのスペースが必要なときに、サイズの "ジャンプ"を取るでしょう。 これは、通常のINSERT文またはSqlBulkLoadでデータをロードするかどうかとは関係ありません。 マーク