web-dev-qa-db-ja.com

Informatica for Netezzaをソースとして、SQL ServerをターゲットとしてETLパフォーマンスを向上させる方法は?

Informaticaサーバー、Informaticaソフトウェア自体、またはデータベースサーバーのどの設定または構成を変更して、Informatica ETLスループットを向上させることができますか?パフォーマンスのトラブルシューティングのために設定できるいくつかのベンチマークは何ですか?具体的には、ソースとしてNetezzaを使用し、ターゲットとしてSQL Serverを使用しています。

この質問からマルチスレッドとInformaticaパーティションを除外してください。

これは過去に行ったものです。

  • サーバーを頻繁に再起動する
  • eTLの読み込み前にSQL Serverのターゲットテーブルのインデックスを削除する
  • コミットレベルを上げる
2
MacGyver

Powercenter informaticaがボトルネックである場合(netezza、sqlサーバー、ネットワークではない場合)、powercenterセッションに役立つ設定があります。 IIRCそれは「レコードバッファサイズ」またはそれに似たものです。デフォルトから512MBに変更します。それが役立つ場合は、より低い値で実験して、より適切な値に減らすことをお勧めします。

この設定は、メモリに単一のレコードを保持するために使用するサイズではありませんが、少なくとも1つのレコードを格納するのに十分な大きさである必要があります。組み込みのヘルプは、この点で少しあいまいです。

反対のシナリオ(SQL Server-> Netezza)では、データ型が役割を果たすことにも気付きました。ソーステーブルのレイアウトにLONG/NTEXT/VARBINARYデータ型が含まれている場合、powercenterは、1つのレコード用に予約する必要があるメモリの量を大幅に過大評価する可能性があります。 Netezzaにはそれらがありませんが、ターゲットに大きなフィールドが含まれる場合にも問題になる可能性があります。

Powercenterセッションログファイルには、データを転送するために予約するメモリ量に関する情報が含まれている必要があります。低すぎると、ボトルネックになる可能性があります。

1
r.m

SQL ServerとNetezzaの両方にアクセスするInformaticaの私の経験は、次のように要約できます。

  1. 選択SQLが十分に単純である場合、読み取りは同等に高速です(100,000行/秒、場合によってはその速度の2倍):

    • 結合なし。

    • いいえgroup by;

    • 並べ替えなし。

    • SQL Serverテーブルのクラスターキーに対してのみwhere句。

    他のすべてのケースでは、NetezzaはSQL Serverに勝ります。

  2. PowerCenterでの挿入はarrayタイプであり、SQL Serverは通常、1秒あたり2000〜4000行を受信できます。

    PowerCenterがボトルネックでない場合、Netezzaへの挿入は1秒あたり80,000〜200,000行で実行されます。

  3. 実行されたSQLはsingletonsであり、arrayではないため、PowerCenterでの更新/削除は、すべてのデータベースで何年もの間遅くなっています。したがって、セッションは通常、SQL Serverをターゲットとして1秒あたり約500行に、Netezzaでは1秒あたりわずか8行に低下します。

    そのため、NetezzaのPowerCenterターゲットごとにステージングテーブルを定義し、セッションの実行中にすべての更新/削除をそれらのテーブルに書き込みます。これらの変更は、target post SQLとして一括で適用されます。すべての書き込み操作が挿入と同じ速度で実行されるようになったため、これは適切にスケーリングされます。

SQL Serverをターゲットとして使用することで悪名高いライターのボトルネックの最善の解決策は、PowerCenter内でソースとターゲットを比較して多くの時間を費やし、検出した差異のみを書き込むことです。それはあなたに長い道のりを運びますが、スケールしません。

私の最後の質問は、なぜ NetezzaからSQLserverにデータを移動するのですか?あなたのビジネスにtrulyがNetezzaで満たすことができないという要件がある場合、どちらが対処できるかを明記してください。

2
Lars G Olsen