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

求助:向链接数据库INSERT海量数据太慢,怎么提速?
我需要将本地数据库的历史数据转移到另外一台服务器数据库中,使用链接服务器,通过条件查询,把历史数据INSERT过去,但发现数据插入不是很快,数据量接近800万,跑了1个钟才插入了200多万,我直接取消了,然后用数据倒入导出功能,明显快多了,请问怎么用存储过程实现倒入导出的效率?另外我也知道C#的SqlBulkCopy也很快,可现在问题是希望直接利用数据库存储过程实现,怎么提高INSERT的效率呢?我觉得太奇怪了,第三方居然比直接的Sql语句还要快,无法理解了,难道sql语句就不能实现第三方的效果?

------解决方案--------------------
数据最好拉而不要选择推。特别是大数据量,拉的速度是推的速度的好几倍。我说的是通过linkserver。就包括用SSIS我们还是最好选择拉。做成循环分批执行,最小化日志写入。把接受数据的数据库修改为大容量日志模式。最小化记录大容量导入!
------解决方案--------------------
我刚才试了一下,连接远程测试服务器,导出5000多万条数据到本地的普通机器上,需要41分钟,可能是我的机器比较慢,如果你的是服务器应该更快。
------解决方案--------------------
SQL Server 2008 introduces trace flag 610, which controls minimally logged inserts into indexed tables

如果是日志瓶颈的话,可以考虑尝试一下。