插入几百万行后,SSIS数据传输速度变慢

时间:2017-03-22 19:08:26

标签: sql-server oracle ssis

我遇到了这个奇怪的问题,任何帮助都会非常感激。

我有一个容器,我的SSIS包中有2个数据流任务,数据传输非常庞大。解决问题。

  • 第一个容器从oracle转移到SQL大约1.3亿行,它运行得很好,并在大约40到60分钟内传输行,这是非常可接受的。
  • 现在来到第二部分另一个数据流任务就是那里只有8600万行从SQL服务器转移到SQL服务器(一个表),数据传输速度非常快,直到60.7亿,之后就消失了或者像接下来的1000万行一样爬行需要花费15个小时,我无法理解为什么会这样呢?
  • 表被截断然后加载,我尝试增加DataBuffer proeprties等但没有用。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您正在创建单个事务,并且事务日志正在填满。如果一次移动10000行,则速度可提高10-100倍。您也可以尝试将Maximum Insert Commit Size设置为0或尝试5000并上升以查看对性能的影响。这是在OLE DB目标组件上。根据我的经验,10000行是当前的神奇数字,似乎是最佳点,但当然它非常依赖于行的大小,SQL Server的版本和硬件设置。

您还应该查看目标表上是否有索引,您可以尝试删除索引,加载表并重新创建索引。

答案 1 :(得分:0)

您的目的地恢复模式是什么?完整/简单等...

源和目的地之间是否有任何转换?尝试将源发送到RowCount以确定源可以发送数据的最大速度。您可能也会看到源端减速。

一旦发现减速,行的内容是否有任何差异?例如,最近的行可能在varchar(max)列中有大量文本,而早期行没有使用这些文本。

您的目的地是否在VM上运行?如果是,您是否预先分配了CPU和RAM? SSIS是多线程的,但它不一定会使用每个核心的100%。 VM主机可能与其他VM共享资源,因为SSIS VM未报告所有资源的完全使用情况。