因此,我开始尝试使用BULK INSERT语句,并开始喜欢上它。使用BULK INSERT只需要1-3个小时就可以完成SQL Server Import/Export Wizard 7小时的工作。然而,我观察到的是,完成的时间在很大程度上取决于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文件。如有任何建议,我们将不胜感激。我会在完成后报告结果。
发布于 2011-10-12 13:10:00
有一些信息here,看起来批处理大小应该尽可能大;文档说明,通常批处理大小越大,性能越好,但您根本没有体验到这一点。从10k开始,似乎是一个很好的批处理大小,但我会从其他角度考虑优化批量插入,比如将数据库置于简单模式,或者在导入竞争期间指定tablock提示。
https://stackoverflow.com/questions/7735274
复制相似问题