ヘッダーをスキップ
Oracle® Database VLDBおよびパーティショニング・ガイド
11g リリース2 (11.2)
B56316-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

パラレル実行の概要

パラレル実行では、複数のCPUおよびI/Oリソースを1つのデータベース操作の実行に適用することができます。これにより、通常意思決定支援システム(DSS)およびデータ・ウェアハウスに関連付けられているサイズの大きなデータベース上で、データ集中型の操作のレスポンス時間を大幅に削減できます。また、オンライン・トランザクション処理(OLTP)システム上で、索引の作成などのバッチ処理またはスキーマ・メンテナンス操作のためにパラレル実行を実装することもできます。パラレル実行はパラレル化とも呼ばれます。パラレル化の概念は、タスクへの分解であり、これにより1つのプロセスで問合せに関するすべての処理を実行するのではなく、多くのプロセスが同時に各処理を実行します。たとえば、1年の合計売上げを4つのプロセスで計算するのに、1つのプロセスですべての四半期を処理するのではなく、各プロセスが1年の四半期それぞれを処理する場合です。これを使用するとパフォーマンスの大幅な向上が見込めます。パラレル実行では、次のプロセスのパフォーマンスを向上できます。

パラレル実行を使用して、Oracle Databaseのオブジェクト型にアクセスすることもできます。たとえば、パラレル実行を使用してラージ・オブジェクト(LOB)にアクセスできます。

必要なパラレル・サーバー・プロセスがパラレル実行で使用できない場合、並列度ポリシーが自動に設定されていると、SQL文がキューに入れられます。必要なリソースが使用可能になると、SQL文はデキューされ、実行が許可されます。デフォルトでは、パラレル文のキューは先入先出キューとして動作します。キューの前の問合せをスケジュール設定できないと、キュー内の問合せのスケジュール設定ができません。これは、システムに使用可能なリソースがあり、キューの先頭の問合せが十分なリソースを得られる場合でも同じです。ただし、リソース・プランを構成および設定すると、パラレル文をデキューする順序と、各ワークロードまたはコンシューマ・グループが使用するパラレル・サーバーの数を管理できます。詳細は、「リソース・マネージャによるパラレル文のキューイングの管理」を参照してください。

この項の内容は次のとおりです。

パラレル実行を実装する場合

パラレル実行は、次のすべての特徴を備えたシステムでメリットがあります。

  • 対称型マルチプロセッサ(SMP)、クラスタまたは大規模パラレル・システム

  • 十分なI/O帯域幅

  • 使用率の低いCPUまたは常時使用されていないCPU(たとえば、CPU使用率が通常30%未満のシステム)

  • ソート、ハッシュおよびI/Oバッファなどの追加のメモリー集中処理をサポートする十分なメモリー

システムでこれらの特徴が1つでも欠けていると、パラレル実行を使用してもパフォーマンスが大幅には改善されないことがあります。実際に、使用率の高すぎるシステムまたはI/O帯域幅が小さいシステムでは、パラレル実行によりシステム・パフォーマンスが低下する場合もあります。

パラレル実行のメリットは、DSSおよびデータ・ウェアハウス環境でわかります。OLTPシステムでも、バッチ処理やスキーマ・メンテナンス操作(索引の作成など)の際にはパラレル実行の利点が得られます。OLTPアプリケーションを特徴づける通常の単純なDMLまたはSELECT文では、パラレルで実行することによるメリットはありません。

パラレル実行を実装しない場合

通常、次のような場合にはパラレル実行は適していません。

  • 標準的な問合せまたはトランザクションが非常に短い(数秒またはそれ以下)環境。

    これには、ほとんどのオンライン・トランザクション・システムが含まれます。パラレル実行はこのような環境では役立ちません。パラレル実行サーバーの調整に関連するコストが発生するためです。短時間のトランザクションの場合、この調整のコストが並列処理のメリットを上回ります。

  • CPU、メモリーまたはI/Oリソースが大量に使用されている環境。

    パラレル実行は追加の使用可能なハードウェア・リソースを利用するように設計されています。そのようなリソースが使用できない場合、パラレル実行はなんのメリットももたらさず、パフォーマンスに悪影響をおよぼす可能性があります。

ハードウェアの基本要件

パラレル実行は、問合せに迅速に応じるために複数のCPUおよびディスクを効率よく使用するように設計されています。本質的に高度なI/O集中型処理です。最適なパフォーマンスを達成するには、同一レベルのスループットを維持するように、ハードウェア構成の各コンポーネント(CPUや計算ノードのホスト・バス・アダプタ(HBA)からスイッチまで、また記憶域コントローラや物理ディスクなどのI/Oサブシステム)をサイズ設定する必要があります。システムがOracle Real Application Cluster (Oracle RAC)システムの場合、インターコネクトのサイズも適切に設定する必要があります。最も弱いリンクのために、構成における処理のパフォーマンスとスケーラビリティが制限されるためです。

Oracle Databaseを除いて、ハードウェア構成によって実現できる最大のI/Oパフォーマンスを測定することをお薦めします。将来のシステム・パフォーマンス評価の基礎としてこの測定結果を使用できます。パラレル実行で達成できるI/Oスループットが、基礎となるハードウェアによって実現可能なスループットを上回ることはありません。Oracle Databaseには、フリーの測定ツール、Orionが用意されています。このツールは、Oracle I/OワークロードをシミュレーションしてシステムのI/Oパフォーマンスを測定します。通常、パラレル実行では大容量のランダムI/Oを行います。

パラレル実行を使用できる操作

次のすべてに対してパラレル実行を使用できます。

  • アクセス方法

    表スキャン、索引の高速全スキャン、パーティション索引のレンジ・スキャンなど。

  • 結合方法

    ネステッド・ループ、ソート・マージ、ハッシュ、スター型変換など。

  • DDL文

    CREATE TABLE AS SELECTCREATE INDEXREBUILD INDEXREBUILD INDEX PARTITIONMOVE/SPLIT/COALESCE PARTITIONなど。

    通常、普通のDDLを使用するところではパラレルDDLを使用できます。ただし、データベースを設計する際にいくつか注意する点があります。1つの重要な制約として、オブジェクト列またはLOB列を含む表に対してパラレルDDLを使用できません。

    このようなDDL操作はすべて、パラレル実行でもシリアル実行でもNOLOGGINGモードで実行できます。

    索引構成表のCREATE TABLE文は、AS SELECT句の有無にかかわらずパラレル化できます。

    別の操作には別の並列処理が使用されます。パラレルのCREATE (パーティション化) TABLE AS SELECT文と、パラレルのCREATE (パーティション化) INDEX文は、パーティション数と等しい並列度(DOP)で実行されます。

  • DML文

    INSERT AS SELECTUPDATEDELETEMERGE操作など。

    パラレルDML (パラレルの挿入、更新、マージおよび削除の操作)は、パラレル実行メカニズムを使用して、大容量のデータベース表や索引に対する大規模なDML操作を高速化し、処理性能を高めます。INSERT ... SELECT文を使用すると、1つのDML文の中で行を複数の表に挿入することもできます。通常、普通のDMLを使用するところではパラレルDMLを使用できます。

    データ操作言語には通常、問合せが含まれますが、パラレルDMLという用語は、パラレルで行われる挿入、更新、マージおよび削除のみを意味します。

  • パラレル問合せ

    SELECT文の問合せおよび副問合せに加えて、DDL文やDML文(INSERTUPDATEDELETEおよびMERGE)の問合せ部分もパラレルで実行できます。

  • その他のSQL操作

    GROUP BYNOT INSELECT DISTINCTUNIONUNION ALLCUBEおよびROLLUPなど、ならびに集計関数および表関数。

  • SQL*Loader

    大容量データを定期的に使用する場合は、SQL*Loaderをパラレル実行で使用できます。ロード処理を高速化するために、次の例のようにパラレル・ダイレクト・パス・ロードを使用できます。

    sqlldr CONTROL=LOAD1.CTL DIRECT=TRUE PARALLEL=TRUE
    sqlldr CONTROL=LOAD2.CTL DIRECT=TRUE PARALLEL=TRUE
    sqlldr CONTROL=LOAD3.CTL DIRECT=TRUE PARALLEL=TRUE
    

    ここで、コマンドラインにユーザーIDとパスワードを入力します。パラメータ・ファイルを使用して同じ結果を得ることもできます。

    索引はパラレル・ロードの際にはメンテナンスされないことに注意してください。