目次

Search

  1. はじめに
  2. パフォーマンスのチューニングの概要
  3. ターゲットの最適化
  4. ソースの最適化
  5. トランスフォーメーションの最適化
  6. マッピングの最適化
  7. パーティション化したマッピングの最適化
  8. 実行時の最適化
  9. SQLデータサービスの最適化
  10. Webサービスの最適化
  11. 接続の最適化

パフォーマンスのチューニングの概要

パフォーマンスのチューニングの概要

ルックアップトランスフォーメーションの最適化

ルックアップトランスフォーメーションの最適化

ルックアップトランスフォーメーションでは、ルックアップキャッシュのタイプやルックアップ条件によって、パフォーマンスが低下することがあります。
ルックアップトランスフォーメーションに関するボトルネックを減らすには、以下の方法を検討します。
最適なデータベースドライバを使用する。
データ統合サービスは、ネイティブデータベースドライバまたはODBCドライバを使用してルックアップテーブルに接続できます。 ネイティブデータベースドライバは、ODBCドライバよりも高いパフォーマンスを得ることができます。
リレーショナルまたはフラットファイルのルックアップ用にルックアップテーブルをキャッシュする。
リレーショナルソースまたはフラットファイルソースのルックアップパフォーマンスを向上させるには、トランスフォーメーションのルックアップキャッシュを有効にします。キャッシュを有効にするとルックアップテーブルがキャッシュされます。マッピングを実行すると、データ統合サービスは、ルックアップテーブルではなく、ルックアップキャッシュに問い合わせを行います。このオプションを有効にしていない場合、データ統合サービスは行ごとにルックアップテーブルを参照します。
ルックアップテーブルをキャッシュに格納するかどうかに関わらず、ルックアップクエリの結果および処理は同じです。ただし、ルックアップキャッシュを使用するとマッピングのパフォーマンスを向上させることができます。 通常、必要なサイズが300MB未満のルックアップテーブルは、キャッシュに入れます。
論理データオブジェクトのルックアップ用にルックアップテーブルをキャッシュする。
論理データオブジェクトのルックアップパフォーマンスを向上させるには、データ統合サービスでデータオブジェクトのキャッシュを有効にします。データオブジェクトのキャッシュを有効にすると、論理データオブジェクトがキャッシュされます。データオブジェクトのキャッシュを有効にするには、マッピングをアプリケーションにデプロイして、論理データオブジェクトのキャッシュを有効にし、
infacmd ms runmapping
コマンドでマッピングを実行します。マッピングを実行すると、データ統合サービスは、論理データオブジェクトではなく、データオブジェクトキャッシュに問い合わせを行います。
Developer toolからマッピングを実行すると、ルックアップトランスフォーメーションが論理データオブジェクトに行単位での問い合わせを行います。
適切なキャッシュタイプを使用する。
次のキャッシュのタイプを使用して、パフォーマンスを向上させることができます。
  • 共有キャッシュ。複数のトランスフォーメーション間でルックアップキャッシュを共有できます。名前なしキャッシュを同じマッピング内のトランスフォーメーション間で共有することができます。名前付きキャッシュを同じマッピング内、または異なるマッピング内のトランスフォーメーション間で共有することができます。
  • 永続キャッシュ。キャッシュファイルを保存して再使用するには、永続キャッシュを使用できるようにトランスフォーメーションを設定します。この機能は、マッピングの実行間でルックアップテーブルが変更されていないことが明らかな場合に使用します。 データ統合サービスはメモリキャッシュをデータベースではなくキャッシュファイルから作成するので、永続キャッシュを使用するとパフォーマンスが向上します。
コンカレントキャッシュを有効にする。
ルックアップトランスフォーメーションを含むマッピングを処理する場合、データ統合サービスはキャッシュを使用するルックアップトランスフォーメーションでデータの最初の行を処理するときに、メモリにキャッシュを構築します。 マッピングに複数のルックアップトランスフォーメーションがある場合、ルックアップトランスフォーメーションによってデータの最初の行が処理されるたびに、データ統合サービスは順番にキャッシュを作成します。 これにより、Lookupトランスフォーメーションの処理は遅くなります。
コンカレントキャッシュを有効にすると、パフォーマンスを向上させることができます。並行処理する追加パイプライン数が1つまたは複数に設定されると、データ統合サービスは順番にではなく同時にキャッシュを作成します。 アグリゲータ、ジョイナ、またはソータトランスフォーメーションなど、処理するのに時間のかかるアクティブなトランスフォーメーションがセッションに多数存在している場合、この方法でパフォーマンスを大幅に向上させることができます。 複数のコンカレントパイプラインを有効にすると、データ統合サービスはキャッシュを構築するまでアクティブなマッピングを待たなくなります。 パイプライン内の他のルックアップトランスフォーメーションも、同時にキャッシュを作成します。
ルックアップ条件の一致を最適化する。
LookupトランスフォーメーションでルックアップキャッシュデータとLookup条件が一致すると、最初に一致した値と最後に一致した値を判断するため、データをソートし並べ替えます。Lookup条件に一致する値を何か返すように、トランスフォーメーションを設定できます。Lookupトランスフォーメーションが一致する値を何か返すよう設定すると、トランスフォーメーションはLookup条件に一致する最初の値を返します。一致する先頭の値を返すか、または最後の値を返すようにトランスフォーメーションを設定する場合と異なり、必ずしもすべてのポートのインデックスを行いません。
一致する任意の値を使用すると、パフォーマンス低下の原因でもある、トランスフォーメーションによるすべてのポートのインデックスを行わないため、パフォーマンスを改善することができます。
キャッシュに入れるレコード数を減らす。
キャッシュに入れる行数を減らして、パフォーマンスを向上させることができます。ルックアップSQL上書きというオプションを使用すると、デフォルトのSQL文にWHERE句を追加できます。動的キャッシュを使用するルックアップトランスフォーメーションにWHERE句を追加するときは、ルックアップトランスフォーメーションの前にフィルタトランスフォーメーションを使用して、WHERE句に一致する動的キャッシュに行を渡します。
ORDER BY文を上書きする。
デフォルトでは、データ統合サービスはキャッシュされたルックアップに対してORDER BY文を生成します。 ORDER BY文にはすべてのLookupポートが含まれます。パフォーマンスを向上させるには、デフォルトのORDER BY文を使用しないで、カラム数の少ないORDER BYを上書きで入力します。
上書きでORDER BY文を入力しても、データ統合サービスは常にORDER BY文を生成します。 ORDER BY上書きのあとに2個のダッシュ(--)を挿入して、生成したORDER BY文を抑止します。
たとえば、Lookup トランスフォーメーションが次のLookup条件を使用するとします。
ITEM_ID = IN_ITEM_ID PRICE <= IN_PRICE
Lookupトランスフォーメーションには、マッピングで使用される3つのLookupポート(ITEM_ID、ITEM_NAME、およびPRICE)が含まれます。ORDER BY文を入力した場合、Lookup条件にポートを入力したのと同じ順番でカラムを入力します。また、すべてのデータベース予約語は引用符で囲みます。
Lookup SQL上書きで次のLookupクエリを入力します。
SELECT ITEMS_DIM.ITEM_NAME, ITEMS_DIM.PRICE, ITEMS_DIM.ITEM_ID FROM ITEMS_DIM ORDER BY ITEMS_DIM.ITEM_ID, ITEMS_DIM.PRICE --
メモリの多いマシンを使用する。
マッピングのパフォーマンスを向上させるには、大容量のメモリを搭載したデータ統合サービスノード上でマッピングを実行します。 マシンに負荷をかけない範囲で、インデックスキャッシュサイズおよびデータキャッシュサイズをできる限り増やします。データ統合サービスノードに十分なメモリがある場合は、ディスクにページングしなくてもすべてのデータをメモリ内に保存できるよう、キャッシュを増やします。
ルックアップ条件を最適化する。
複数のルックアップ条件を入れる場合は、ルックアップのパフォーマンスを最適化するために、次の順序で条件を指定します。
  • 等しい(=)
  • より小さい (<)、より大きい(>)、より小さいまたは等しい (<=)、より大きいまたは等しい (>=)
  • 等しくない(!=)
ルックアップ行をフィルタする。
パフォーマンスを向上させるには、フィルタ条件を作成して、ルックアップキャッシュの作成時にソースから取得されるルックアップ行の数を少なくします。
ルックアップテーブルをインデックスに入れる。
データ統合サービスは、ルックアップ条件カラムの値に対してクエリ、ソート、および比較を行う必要があります。 インデックスには、Lookup条件で使用する各カラムを含めなければなりません。
次の種類のLookupにおいて、パフォーマンスを向上させることができます。
  • キャッシュを使用するルックアップ。パフォーマンスを向上させるには、ルックアップのORDER BY文のカラムにインデックスを付けます。マッピングログファイルにはORDER BY文が含まれます。
  • キャッシュを使用しないルックアップ。パフォーマンスを向上させるには、ルックアップ条件のカラムにインデックスを付けます。データ統合サービスは、ルックアップトランスフォーメーションに入る各行に対してSELECT文を発行します。
複数のルックアップを最適化する。
マッピングに複数のルックアップが含まれている場合、キャッシングが有効になっていてヒープメモリが十分にあっても、ルックアップによりパフォーマンスが低下することがあります。一番多くのデータを問い合わせるルックアップトランスフォーメーションを探して、全体のパフォーマンスを向上させることができます。
ルックアップテーブルがマッピングにおいてソーステーブルと同じデータベースにあり、キャッシュが使用できない場合は、ルックアップトランスフォーメーションを使用する代わりに、ソースデータベース内でテーブル同士を結合します。