2

我有一个 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 目标,我什至已经为每个目标创建了不同的连接管理器。

条件拆分


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

这是源连接管理器

源连接管理器

这是我的源对象属性。

源对象属性

这是目的地的连接管理器

目标连接管理器

这是我的目标对象属性。

目标连接属性



我怎样才能加快速度?

编辑

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

4

1 回答 1

1

对于那些可能遇到相同情况的人......这是一个简单的修复,经过一些非常有指导和有用的评论!

我最终使用了 OLE DB Source 和 OLE DB Destination 对象而不是 ADO 对象。

仅在目标上使用,而源仍然是 ADO 仍然会产生缓慢的结果。

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

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

于 2013-08-13T20:57:59.220 回答