ヘッダーをスキップ

Oracle Database 2日でデータ・ウェアハウス・ガイド
11g リリース1(11.1)

E05764-01
目次
目次
索引
索引

戻る 次へ

6 ロード・パフォーマンスの向上

この項は、パフォーマンス要件を満たすETLロジックを作成するためのガイドとして使用します。

パーティション交換ロードを使用したパフォーマンスの向上

データ・パーティションを使用すると、ターゲット・システムでデータをロードまたは削除するときのパフォーマンスが向上します。この方法は、パーティション交換ロード(PEL)と呼ばれています。

PELは、比較的少量のデータを、大量の履歴データを含むターゲットにロードする際に使用してください。ターゲットにできるものとしては、データ・ウェアハウスの表、ディメンション、キューブなどがあります。

パーティション交換ロードについて

ターゲット・システムのパーティションを操作すると、パーティション交換ロード(PEL)を使用して、即時にデータを追加または削除できます。表が空のパーティションで交換されると、新規データが追加されます。

パーティション交換ロードを使用すると、新規データをパーティションとしてターゲット表と交換し、ロードできます。たとえば、新規データを保持する表は、パーティションのアイデンティティをターゲット表から引き継ぎ、このパーティションはソース表のアイデンティティを引き継ぎます。この交換プロセスは、実際のデータの移動を伴わないDDL操作です。

図6-1    パーティション交換ロードの概要


画像の説明

図6-1では、ソース表Sourceのデータが、4つのパーティション(Target_P1、Target_P2、Target_P3およびTarget_P4)で構成されたターゲット表に挿入されます。新規データをTarget_P3にロードする必要がある場合、パーティション交換操作では、実際のデータを移動せずに、データ・オブジェクトの名前のみを交換します。交換後は、以前のSourceという名前がTarget_P3に変更され、このTarget_P3という名前がSourceになります。ターゲット表には、Target_P1、Target_P2、Target_P3およびTarget_P4の4つのパーティションが含まれたままです。Oracle9i で使用可能なパーティション交換操作は、データを移動することなくロード・プロセスを完了します。

パーティション交換ロードのマッピングの構成

パーティション交換ロードのマッピングを構成する手順
  1. プロジェクト・エクスプローラで、マッピングを右クリックして「構成」を選択します。

    Oracle Warehouse Builderによって「構成プロパティ」ウィンドウが表示されます。

    図6-2    PEL構成プロパティ


    画像の説明

  2. デフォルトでは、パーティション交換ロードはすべてのマッピングに対して無効です。パーティション交換ロードを使用するには、「PEL有効」を選択します。

  3. 「データ・コレクション頻度」を使用して、マッピングを実行するたびに収集する新規データの量を指定します。このパラメータを設定して、年、四半期、月、日、時間、分ごとのデータの収集を指定します。これによって、パーティション数が決定されます。

  4. 収集したデータをステージングする一時表を作成する場合は、パーティション交換を実行する前に、「ダイレクト」を選択します。このパラメータを選択しないと、一時表は作成されないまま、ソース表がパーティションとしてターゲット表に直接スワップされます。

  5. 「データの置換」を選択すると、Oracle Warehouse Builderによって、ターゲット・パーティションにある既存のデータが新しく収集したデータで置換されます。このパラメータを選択しないと、ターゲット・パーティションには、既存のデータが保持されます。新規データは、空ではないパーティションに挿入されます。このパラメータは、ローカル・パーティションに影響を与え、ターゲット表のパーティションの削除またはスワップに使用できます。「TRUNCATE/INSERT」プロパティは、表レベルで設定できます。

ダイレクトおよび間接パーティション交換ロード

Oracle Warehouse Builderを使用して、パーティション交換によってターゲットをロードする場合は、ターゲットを間接的または直接的にロードできます。

間接パーティション交換ロードの使用

パーティション交換ロードを使用して設計したマッピングにリモート・ソースまたは複数ソースの結合が含まれている場合、パーティション交換を続行する前に、ソース処理が実行され、データがステージングされる必要があります。したがって、このようなマッピングは、ダイレクトPELをFalseに設定した状態で構成します。ソース処理の結果を格納する一時表は、Oracle Warehouse Builderによって透過的に作成され、維持されます。この表は、PELの実行後にOracle Warehouse Builderによって削除されます。

図6-3は、2つのソースを結合し、集計を実行するマッピングを示しています。ORDER_SUMMARY表にロードされたすべての新規データが常に同じパーティションにロードされる場合は、このマッピングで間接PELを使用して、ロードのパフォーマンスを改善できます。この場合、Oracle Warehouse Builderによって、アグリゲータとORDER_SUMMARYの間に一時表が透過的に作成されます。

図6-3    複数ソースでのマッピング


画像の説明

Oracle Warehouse Builderでは、ターゲット表と同じ構造(列、索引、制約が同じ)を使用して、一時表が作成されます。この一時表は、パフォーマンス向上のために、Oracle Warehouse Builderによってパラレル直接パス・ロードINSERTを使用してロードされます。INSERTの後、Oracle Warehouse Builderでは、一時表の索引と制約がパラレルで作成されます。

例: ファクト表を公開するためのダイレクト・パーティション交換ロードの使用

ソース表がローカルで、データの品質が高い場合は、ダイレクトPELを使用します。マッピングは、ソースとターゲットが同じデータベースにあり、完全に同じ構造であるように設計する必要があります。ソースとターゲットの索引、制約、列数、列タイプおよび列の長さは、すべて同じである必要があります。

たとえば、図6-3と同じマッピングがあり、データをターゲットにロードするタイミングをより細かく制御するとします。データ量によってはロードに数時間がかかり、現状では、ターゲット表がいつ更新されるかも正確にはわかりません。

ダイレクトPELを使用してデータを即時にターゲットにロードする手順
  1. ソース・データを結合し、必要に応じてデータを変換し、確実に検証してステージング表にロードするマッピングを1つ設計します。このマッピングはPELを使用するように構成しないでください。

    ステージング表を、別のマッピングでロードする最終ターゲットの構造に正確に一致するように設計します。たとえば、図6-3にあるステージング表のORDER_SUMMARYは、図6-4にある最終ターゲットORDER_CUBEと同じ構造である必要があります。

  2. 図6-4に示すように、ステージング表から最終ターゲットにデータをロードする2番目のマッピングを作成します。このマッピングはダイレクトPELを使用するように構成してください。

    図6-4    Publish_Sales_Summaryマッピング


    画像の説明

  3. Oracle Warehouse Builderのプロセス・フロー・エディタまたはOracle Workflowを使用して、最初のマッピングの完了後に2番目のマッピングを起動します。

パーティション交換ロードの効果的な使用

次の条件がTrueの場合は、スケーラビリティの高いロード・パフォーマンスのためにパーティション交換ロードを効果的に使用できます。

マッピングでのターゲットの構成

パーティション交換ロードに対してマッピングでのターゲットを構成する手順

手順1: すべてのパーティションの作成

パーティションは、実行中に自動的には作成されません。すべてのパーティションは、パーティション交換ロードを使用する前に、すべてのパーティションを作成する必要があります。

たとえば、新しいデータ収集の頻度として「月」を選択する場合、新しいデータの各月に対して必要なパーティションをすべて作成する必要があります。データ・オブジェクト・エディタを使用して表、ディメンションまたはキューブのパーティションを作成します。

図6-5では、表ORDER_SUMMARYに対するプロパティ・インスペクタ・ウィンドウが表示されます。

パーティション交換ロードを使用するには、すべてのパーティションがネーミング規則に従って命名される必要があります。たとえば、 2002年5月のデータを保持するパーティションの場合、そのパーティション名はY2002_Q2_M05という形式にする必要があります。

PELでパーティションを識別するには、次のいずれかの形式の名前をパーティションに指定する必要があります。

Ydddd

Ydddd_Qd

Ydddd_Qd_Mdd

Ydddd_Qd_Mdd_Ddd

Ydddd_Qd_Mdd_Ddd_Hdd

Ydddd_Qd_Mdd_Ddd_Hdd_Mdd

dには、10進数の数字が入ります。すべての文字は、大文字にする必要があります。小文字は認識されません。

図6-5    表ORDER_SUMMARYの構成プロパティ


画像の説明

各パーティションを正しく命名すると、Oracle Warehouse Builderによって各パーティションの「上限値」プロパティが自動的に計算されます。そうでない場合は、Oracle Warehouse BuilderでDDL文が作成されるように、上限値を各パーティションに対して手動で構成する必要があります。次に、Oracle Warehouse Builderによって作成されたDDL文の例を示します。

. . .
PARTITION A_PARTITION_NAME 
      VALUES LESS THAN (TO_DATE('01-06-2002','DD-MM-YYYY')),
. . .

図6-6では、「上限値」パラメータの自動的に生成された構成値が表示されます。

図6-6    自動生成された「上限値」設定


画像の説明

手順2: 「LOCAL」オプションを使用したすべての索引の作成

図6-7では、ORDER_SUMMARY表に追加された索引(ORDER_SUMMARY_PK_IDX)を示しています。この索引には、2つの列、ORDER_DATEとITEM_IDがあります。次のように構成します。

これで、Oracle Warehouse Builderで、表ORDER_SUMMARYに一意のローカル索引を作成するDDL文を作成できます。

ローカル索引を使用すると、PELのパフォーマンスを最大限に活用できます。ローカル索引では、すべての索引が表と同じ方法でパーティション化されている必要があります。PELを使用して一時表をターゲット表にスワップすると、索引セグメントのアイデンティティもスワップされます。

図6-7    ローカル索引としての索引の構成


画像の説明

ローカル索引として索引が作成されている場合、Oracleサーバーでは、パーティション・キー列を索引の最初の列にする必要があります。前述の例では、パーティション・キーはORDER_DATEで、索引ORDER_SUMMARY_PK_IDXの最初の列になります。

手順3: 「索引を使用」オプションを使用する主キーまたは一意キー

この手順では、主キー制約および一意キー制約がすべて、「索引を使用」オプションで作成されるように指定する必要があります。図6-8では、ORDER_SUMMARY表の主キー制約ORDER_SUMMARY_PKが、「索引を使用」オプションで指定されている例を示しています。

「索引を使用」オプションを使用すると、表に制約を追加した際に索引が自動的に作成されなくなります。サーバーは、制約と同じ列リストを持つ既存の索引を検索します。したがって、主キー制約または一意キー制約は、ユーザー定義の一意のローカル索引で補足する必要があります。制約ORDER_SUMMARY_PKに必要な索引は、「手順2: 「LOCAL」オプションを使用したすべての索引の作成」で作成したORDER_SUMMARY_PK_IDXです。

図6-8    「索引を使用」オプションによる制約の指定


画像の説明

Oracle Warehouse Builderでのパーティション交換ロードの使用の制限

Oracle Warehouse BuilderでのPELの使用には、次の制限があります。


戻る 次へ
Oracle
Copyright © 2007 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引