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

跨库转移数据性能问题,在线等答案。。。
使用insert into tableName select * from DatabaseName.dbo.tableName转移数据
转移一张700多万的大表,需要8分钟左右,产生7G多的日志文件
求解有没有更好的方案提升性能,缩短时间???
性能优化

------解决方案--------------------
分批 插入-提交
------解决方案--------------------
可以尝试分批多个交易,这样产生的日志没那么大。另外你可以尝试用SSIS之类的,可能性能更好一点。 
------解决方案--------------------
select into 比insert select 快
你试试bcp导出文件早导入的方式怎么样

如果想要减少事务日志 
就分批循环,中间写一个waitetime  来让系统回收日志达到重复利用。
------解决方案--------------------
接受数据的数据库设置为简单恢复或大容量恢复模式。
master.dbo.cmdshell 'bcp "select * from tb" -batch 10000'

授之于鱼不如授之于渔,

使用 Batch Size 提高 Transaction 性能 - 微软亚太区数据库技术支持组 官方博客 - Site Home - MSDN Blogs 好论坛你值得拥有!


------解决方案--------------------
select * into 
日志恢复模式改为大容量恢复模式,另外,禁用聚集索引。
------解决方案--------------------
700W才8分钟还可以啦 

另外,你转移后,旧表要清空吗?如果要清空,就不如直接改名,再新建表了。
------解决方案--------------------
1/ 大批量插入数据,库恢复模式设置为大容量插入模式或简单模式;
2/ 可以使用bcp "database.dbo.tablename"  out c:\dbbackup\tablename.csv  -w -t"," -T
然后使用bcp in ...或bulk insert ...导入。