日期:2014-05-17  浏览次数:20345 次

求解Bulk Insert速度问题
我发现Bulk Insert速度并不快,150万的数据居然要花1分多钟才能导入,目标表是空表,只有一个非聚集索引,我估计可能是非聚集索引的关系,所以我去掉了BatchSize,采用全部数据一次导入,避免非空表的索引开销,但发现效果不明显,请问大家有什么好办法?
注意,我不能显示地禁用和启用这个索引,因为表是动态的(很多表需要同一个程序用bulk insert去导入数据),相应的表中的索引名也是动态的,除非能够动态禁用和启用索引,请问是否可以做到?

------解决方案--------------------
bulk insert 的时候把恢复模式改成 大容量日志模式 试下
完毕之后再切换到之前的模式
------解决方案--------------------

ALTER DATABASE demo SET RECOVERY BULK_LOGGED --只记录大容量头尾
BULK INSERT 
ALTER DATABASE demo SET RECOVERY FULL --完整记录


------解决方案--------------------
如果楼主已经是简单模式,不用改了,
数据量大的时候,影响速度的因素很多,
楼主可以考虑SSIS,分成多个任务同时导入,
这样的话更多的利用CPU负载,但是解决不了CPU、硬盘和网速的性能瓶颈