2009-04-17 72 views
0

我正在使用SqlBulkCopy類對SQLServer數據庫執行批量插入。SQLBulkCopy會顯着增加.mdf文件大小嗎?

與數據庫關聯的.mdf文件的原始大小爲1508 Mb。

當我運行它(在大約400萬條記錄的相同數據上):
BatchSize是100000,.mdf的大小增長到1661 MB。
BatchSize爲1000000,.mdf的大小增長至1659 MB。

爲什麼這種變化?這樣一個小的變化是可以忽略的,除了當我的測試器運行它(在相同的數據上),批量大小爲100時,.mdf文件瘋狂地增長直到它耗盡了所有可用的20個演出,然後它由於缺乏可用空間而出錯。

這是因爲SqlBulkCopy有一些它分配的固定大小的塊嗎?
它的工作正常與BatchSizes> 100000,但我想了解這種奇怪的行爲/錯誤的根本原因。

+0

你確定這是.MDF的增長,而不是.LDF(日誌文件)?我希望無論數據如何插入,數據文件都會類似地增長,但日誌可能會有不同的工作方式。 – 2009-04-17 11:51:36

回答

1

這取決於數據庫的增長設置。默認值是增長10%,但在填充時可以增加1GB。

3

您的mdf文件是您的數據存儲位置 - 它應該根據您的數據加載大致增長。但正如「ck」已經指出的那樣 - SQL Server允許你指定一個特定的增長模式,例如,插入行時,mdf文件不會逐字節增長。因此,根據您的設置,當需要更多空間時,它會在尺寸上「跳躍」。

這與您是否使用常規INSERT語句或SqlBulkLoad加載數據無關。

馬克

由散裝裝載或「正規」的負載會對你的日誌文件的大小,而不是對MDF文件的影響
0

加載數據(DB必須是簡單或大容量日誌記錄恢復模式,有一些其他要求) 您確定測試儀的日誌文件沒有用完所有可用空間嗎?