随着时间的推移,SSIS DataFlow会大幅减速

时间:2013-08-13 19:43:25

标签: .net sql database sql-server-2008 ssis

我有一个ADO NET Source组件,可以在表中查询所有700,000条记录。

它连接到SQL Server目标组件。

处理前100,000个记录需要23秒(+ - 1秒)。

接下来的100,000条记录需要50秒。它只会变得更糟。

以下是具体细节


我已经在目标数据库上尝试了以下三个不同的命令。

ALTER DATABASE AdamDB SET RECOVERY SIMPLE;

ALTER DATABASE AdamDB SET RECOVERY BULK_LOGGED ;

ALTER DATABASE AdamDB SET RECOVERY FULL ;

在所有3个案例中,前100,000个记录的时间保持在23秒。


我还尝试根据ID值

添加条件性拆分组件
Default
SKU % 4 < 1
SKU % 4 < 2
SKU % 4 < 3

每个输出条件都有不同的SQL Server目标,我甚至为每个目标创建了不同的Connection Manager。

Conditional Split


这些似乎都没有对性能产生任何明显的影响。

以下是源连接管理器

Source Connection Manager

以下是我的源对象属性。

Source Object Properties

以下是目的地的连接管理器

Destination Connection Manager

,这是我的目标对象属性。

Destination Connection Properties



如何加快速度?

修改

根据Lamak的建议,我尝试使用OLE DB Destination而不是SQL Server Destination。这似乎具有相同的速度结果并且随着时间的推移而减速。

1 个答案:

答案 0 :(得分:1)

对于那些可能遇到同样情况的人来说......这是一个简单的解决方案,经过一些非常有针对性的指导。有用的评论!

我最终使用OLE DB源和OLE DB目标对象而不是ADO对象。

仅在目的地使用,而源仍为ADO仍然会导致结果缓慢。

在源和目标上使用OLE DB解决了这个问题。

我现在在约55秒内处理750,000条记录!