我有一个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。
这些似乎都没有对性能产生任何明显的影响。
以下是源连接管理器
以下是我的源对象属性。
以下是目的地的连接管理器
,这是我的目标对象属性。
如何加快速度?
修改
根据Lamak的建议,我尝试使用OLE DB Destination而不是SQL Server Destination。这似乎具有相同的速度结果并且随着时间的推移而减速。
答案 0 :(得分:1)
对于那些可能遇到同样情况的人来说......这是一个简单的解决方案,经过一些非常有针对性的指导。有用的评论!
我最终使用OLE DB源和OLE DB目标对象而不是ADO对象。
仅在目的地使用,而源仍为ADO仍然会导致结果缓慢。
在源和目标上使用OLE DB解决了这个问题。
我现在在约55秒内处理750,000条记录!