0

我正在使用 SqlBulkCopy 类对 SQLServer 数据库进行批量插入。

与 DB 关联的 .mdf 文件的原始大小为 1508 Mb。

当我以 100000 的 BatchSize 运行它(在大约 400 万条记录的相同数据上)时
,.mdf 的大小增长到 1661 MB。
BatchSize 为 1000000,.mdf 的大小增长到 1659 MB。

为什么会有这种变化?这么小的变化可以忽略不计,除了当我的测试器以 100 的批量大小运行它(在相同的数据上)时,.mdf 文件疯狂增长,直到它用完所有可用的 20 个演出,然后它由于可用空间不足,出现错误。

这是因为 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 文件(数据库必须处于简单或批量日志恢复模式,还有一些其他要求)你确定测试人员的日志文件没有用完所有可用空间?

于 2009-04-17T15:04:47.633 回答