解释和微调BATCHSIZE参数?

时间:2011-10-12 04:29:45

标签: sql sql-server tsql sql-server-2008

所以我正在玩BULK INSERT声明并开始喜欢它。使用SQL Server Import/Export WizardBULK INSERT 7小时的谈话只需要1-3个小时。但是,我观察到的是完成时间在很大程度上取决于BATCHSIZE规范。

以下是我观察到包含5000万条记录的5.7 GB文件的时间:

BATCHSIZE = 50000,  Time Taken: 17.30 mins
BATCHSIZE = 10000,  Time Taken: 14:00 mins
BATCHSIZE = 5000 ,  Time Taken: 15:00 mins

这只会让我感到好奇:是否有可能为BATCHSIZE确定一个好的数字,如果是这样,它依赖于什么因素,并且可以近似而无需运行相同的查询数十次?

我的下一次运行将是一个包含7.8亿条记录的70 GB文件。任何建议,将不胜感激?我完成后会报告结果。

1 个答案:

答案 0 :(得分:1)

有一些信息here,看起来批量大小应该尽可能大;文档通常表示批量大小越大,性能越好,但您根本没有遇到过这种情况。似乎10k是一个很好的批量大小,但我会考虑从其他角度优化批量插入,例如将数据库置于简单模式或在导入竞赛期间指定tablock提示。