2009-04-17 74 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必须是简单或大容量日志记录恢复模式,有一些其他要求) 您确定测试仪的日志文件没有用完所有可用空间吗?