0

SqlBulkCopyクラスを使用して、SQLServerDBへの一括挿入を行っています。

DBに関連付けられている.mdfファイルの元のサイズは1508Mbです。

(約400万レコードの同じデータで)
BatchSizeを100000で実行すると、.mdfのサイズは1661MBになります。
BatchSizeが1000000の場合、.mdfのサイズは1659MBに増加します。

なぜこのバリエーション?テスターがバッチサイズ100で(同じデータに対して)実行すると、使用可能な20ギガすべてを使い果たすまで、.mdfファイルがめちゃくちゃ大きくなることを除いて、このような小さな変化は無視できます。使用可能なスペースが不足しているため、エラーが発生します。

これは、SqlBulkCopyに割り当てられる固定サイズのブロックがあるためですか?
BatchSizes> 100000で正常に動作しますが、この奇妙な動作/バグの根本的な原因を理解したいと思います。

4

3 に答える 3

3

mdf ファイルはデータが保存される場所です。データの負荷に応じて大まかに大きくなるはずです。しかし、「ck」が既に指摘したように、SQL Server では特定の成長パターンを指定できます。たとえば、mdf ファイルは、行を挿入するたびにバイト単位で成長しません。そのため、設定によっては、より多くのスペースが必要になると、サイズが「ジャンプ」します。

これは、通常の INSERT ステートメントまたは SqlBulkLoad でデータをロードするかどうかとは関係ありません。

マルク

于 2009-04-17T11:22:17.373 に答える
1

これは、データベースの拡張設定によって異なります。デフォルトでは10%増加しますが、いっぱいになると1GB増加するように設定できます。

于 2009-04-17T11:07:36.970 に答える
0

バルク ロードまたは「通常の」ロードによるデータのロードは、MDF ファイルではなく、ログ ファイルのサイズに影響します (DB はシンプルまたはバルク ログ リカバリ モードである必要があり、他にもいくつかの要件があります)。ログ ファイルは、使用可能なすべてのスペースを使い果たしませんでしたか?

于 2009-04-17T15:04:47.633 に答える