2

テーブルの 700,000 レコードすべてに対してクエリを実行する ADO NET ソース コンポーネントがあります。

これは、SQL Server Destination コンポーネントに接続されています。

最初の 100,000 レコードを処理するのに 23 秒 (+ - 1 秒) かかります。

次の 100,000 レコードにはさらに 50 秒かかります。そして、それは悪化するだけです。

以下、仕様と詳細です


宛先データベースで、次の 3 つの異なるコマンドを既に試しました。

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 の提案から、SQL Server Destination の代わりに OLE DB Destination を使用してみました。これは、速度の結果は同じで、時間の経過とともに遅くなるようです。

4

1 に答える 1