2016-05-12 16 views
1

私のマッピングのうちの1つが本当に長い時間(2時間)実行されています。セッションログから、私はほとんどの時間をtkingしている "Time out based commit poin"とビジー率は非常に高いです(これは時間がかかります、私はDB内で手動でSQLクエリーを実行しました)。そのため、基本的には、挿入と更新の間でレコードを分割するルータがあります。それはSQLのトランスフォーメーション、更新統計とアグリゲータを持っています。アグリゲータの前にソーターを追加しましたが、運はありません。テーブルに更新中のターゲットベースのコミットポイント

また、他のブログのいくつかをチェックすることによって許容されるコミット間隔、Lins Sequential Buffer Lenght、Maximum Memoryが変更されました。

+0

更新パフォーマンスを調査してください。更新ステートメントを実行し、実行計画と実行計画を確認します。あなたはおそらくテーブル上に多くのインデックスを持っていますか? – Maciejg

答えて

0

可能であれば、将来的に入力レコードが増加するためキャッシュを作成している変換を避けてください。キャッシュサイズもスループットを向上させ、減少します

1)アグリゲータ:SQLオーバーライド自体に集約を使用してみてください

2)ソーター:SQLオーバーライド自体

一般的にSQLで同じことをしよう入力レコードごとにSQLセッションが呼び出され、データベースへの接続が確立され、行がフェッチされるため、巨大なデータロードでは変換が遅くなります。たとえば、100万のレコードがあり、100万のSQLセッションがバックエンドで開始され、データベースが呼び出されたとします。

SQL変換は何をしていますか?それだけでサロゲートキーを生成するか、そのストリームから得られた値に基づいてテーブルから値を取得するためのストリーム

から派生した値に基づいてテーブルから値をフェッチしている: 検索

を使用してみてくださいサロゲートキーを生成するために、代わりに

が、その目的は、その

も行う以下のチェックが

ソートのSES以外の任意のものであれば、私に教えてくださいOracleのシーケンスを使用イオンスレッドでログインして、ちょうど の開始時間と終了時間以下

1)ルックアップキャッシュの作成を書き留めておきます(クエリが発行間の時間 - >最初の行が返される - >キャッシュの作成が完了した)

2 )リーダースレッドの最初の行の復帰時間

よろしく、

ラジ

+0

一般的なルールとして、PowerCenter変換(集約またはソート)の代わりにSQLを使用することは悪い考えです。 ETLツールを使用する全理由は、データベース側の労力を少なくすることです。索引が利用可能な場合にDBソートを使用するなど、いくつかの例外があります。 – Maciejg

関連する問題