プライマリ・コンテンツに移動
Oracle® Database VLDBおよびパーティショニング・ガイド
12c リリース1 (12.1)
B71291-10
目次へ移動
目次
索引へ移動
索引

前
次

プロデューサ操作またはコンシューマ操作

他の操作の出力を必要とする操作は、コンシューマ操作と呼ばれます。図8-1では、GROUP BY SORT操作はHASH JOIN操作のコンシューマです。GROUP BY SORTではHASH JOINの出力が必要なためです。

コンシューマ操作は、プロデューサ操作で行が生成されるとすぐに行の消費を開始できます。例8-2では、パラレル実行サーバーがsales表のFULL SCANで行を生成する間、別のパラレル実行サーバー・セットがHASH JOIN操作の実行を開始して、行を使用することができます。

同時に実行される2つの操作それぞれには、独自のパラレル実行サーバー・セットが与えられます。したがって、問合せ操作とデータ・フロー・ツリーの両方でそれぞれの並列処理が行われます。個々の操作の並列処理はイントラ・オペレーション並列化と呼ばれます。データ・フロー・ツリーの操作間の並列処理はインター・オペレーション並列化と呼ばれます。Oracle Databaseの操作のプロデューサとコンシューマという形態のため、実行時間を最小限にするために同時に実行する必要があるのはツリー内の2つの操作のみです。次の文に関して、イントラ・オペレーション並列化とインター・オペレーション並列化を説明します。

SELECT * FROM employees ORDER BY last_name;

実行計画により、employees表の全体スキャンが実装されます。この操作の後で、取得された行がlast_name列の値に基づいてソートされます。この例では、last_name列には索引がないとします。また、問合せのDOPが4に設定されているとします。これは、どの操作に対しても4つのパラレル実行サーバーが使用できることを意味します。

図8-2は、この例の問合せのパラレル実行を示しています。

図8-2 インター・オペレーション並列化と動的パーティション化

図8-2の説明が続きます
「図8-2 インター・オペレーション並列化と動的パーティション化」の説明

図8-2に示すように、この問合せのDOPは4ですが、実際は8つのパラレル実行サーバーが関係しています。これは、プロデューサ演算子とコンシューマ演算子が同時に実行できるためです(インター・オペレーション並列化)。

また、スキャン操作に関係するすべてのパラレル実行サーバーが、SORT操作を実行する適切なパラレル実行サーバーに行を送信します。パラレル実行サーバーでスキャンされる行のlast_name列の値がAからGの場合、その行は最初のORDER BYパラレル実行サーバーに送信されます。スキャン操作が完了すると、ソート・プロセスはソート結果を問合せコーディネータに返し、コーディネータが完全な問合せ結果をユーザーに返します。