从登台到最终表格的最快方法是什么? SSIS数据流任务(使用视图作为源并具有快速加载活动)或插入INTO SELECT ….命令?我尝试了数据流任务,并且可以在大约5小时内获得大约10亿行(服务器上的8核/ 192 GB RAM),这对我来说感觉非常慢.
解决方法
>禁用/删除目标表上的索引/约束.
> INSERT dbo.[Target] WITH(TABLOCKX)SELECT …
>当然,有了JNK的功劳,您可以批量生成上述n行,这可以减少事务日志的压力,当然也就是说如果某个批次失败,您只需要从该批次开始.我在这里写博客(虽然在引用删除时,同样的基本概念适用):http://www.sqlperformance.com/2013/03/io-subsystem/chunk-deletes
>重新启用/重新创建目标表上的索引/约束(如果它们不是所有操作都必需的话,您可以推迟其中的一些,并且更快地使基础数据联机更为重要).
如果您的分区是物理的而不仅仅是逻辑分区,则可以通过让不同的进程同时填充不同的分区来获得一些时间(当然这意味着您不能使用TABLOCK / TABLOCKX).这假设源也适用于多个进程选择而不重叠/锁定等,并使操作的那一侧更慢(提示:在源上创建适合目标分区方案的聚簇索引).
你也可以考虑一些更原始的东西,比如BCP OUT
/ BCP IN
.
我不知道我会跳到SSIS来帮助解决这个问题.那里可能有一些效率,但我不知道这些努力是否能够节省成本.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。