日本語PDF

8.6 parallel_clause

目的

parallel_clauseを使用すると、データベース・オブジェクト作成のパラレル化、およびその後のオブジェクトに対する問合せのデフォルトの並列度と、オブジェクトに対するDML操作の設定が可能になります。

parallel_clauseは次の文に指定できます。

  • CREATE TABLE: 表のパラレル化を設定する場合(「CREATE TABLE」を参照)

  • ALTER TABLE(「ALTER TABLE」を参照)

    • 表のパラレル化を変更する場合

    • 表パーティションの追加、結合、交換、マージ、分割、切捨て、削除または移動の操作をパラレル化する場合

  • CREATE CLUSTERおよびALTER CLUSTER: クラスタのパラレル化を設定または変更する場合(「CREATE CLUSTER」および「ALTER CLUSTER」を参照)。

  • CREATE INDEX: 索引のパラレル化を設定する場合(「CREATE INDEX」を参照)

  • ALTER INDEX(「ALTER INDEX」を参照)

    • 索引のパラレル化を変更する場合

    • 索引の再構築または索引パーティションの分割をパラレル化する場合

  • CREATE MATERIALIZED VIEW: マテリアライズド・ビューのパラレル化を設定する場合(「CREATE MATERIALIZED VIEW」を参照)

  • ALTER MATERIALIZED VIEW(「ALTER MATERIALIZED VIEW」を参照)

    • マテリアライズド・ビューのパラレル化を変更する場合

    • マテリアライズド・ビュー・パーティションの追加、結合、交換、マージ、分割、切捨て、削除または移動の操作をパラレル化する場合

    • マテリアライズド・ビュー・サブパーティションの追加または移動の操作をパラレル化する場合

  • CREATE MATERIALIZED VIEW LOG: マテリアライズド・ビュー・ログのパラレル化を設定する場合(「CREATE MATERIALIZED VIEW LOG」を参照)

  • ALTER MATERIALIZED VIEW LOG(「ALTER MATERIALIZED VIEW LOG」を参照)

    • マテリアライズド・ビュー・ログのパラレル化を変更する場合

    • マテリアライズド・ビュー・ログ・パーティションの追加、結合、交換、マージ、分割、切捨て、削除または移動の操作をパラレル化する場合

  • ALTER DATABASE ... RECOVER: データベースをリカバリする場合(「ALTER DATABASE」を参照)

  • ALTER DATABASE ... standby_database_clauses: スタンバイ・データベースに対する操作をパラレル化する場合(「ALTER DATABASE」を参照)。

関連項目:

DBMS_PARALLEL_EXECUTEパッケージ(行のチャンクの変更を表に適用するメソッドを含むパッケージ)の詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。エラーがない場合は、各チャンクに対する変更が個別にコミットされます。

構文

parallel_clause::=

セマンティクス

この項では、parallel_clauseのセマンティクスについて説明します。詳細は、特定のデータベース・オブジェクトまたは操作に対してパラレル化を設定または再設定するSQL文の説明を参照してください。

注意:

parallel_clause構文は、以前のリリースの構文にかわるものです。以前のリリースの構文は下位互換用にサポートされていますが、説明されている動作とわずかに異なることがあります。

parallel_clauseは、PARALLEL_DEGREE_POLICY初期化パラメータの設定に基づいて解釈されます。この初期化パラメータがAUTOに設定されている場合、parallel_clauseは完全に無視され、オプティマイザによってすべての文に対して最適な並列度が決定されます。PARALLEL_DEGREE_POLICYMANUALまたはLIMITEDのいずれかに設定されている場合、parallel_clauseは次のように解釈されます。

NOPARALLEL

NOPARALLELを指定すると、シリアル実行が行われます。これはデフォルトです。

PARALLEL

PARALLELを指定すると、パラレル実行が行われます。

  • PARALLEL_DEGREE_POLICYMANUALに設定されている場合は、オプティマイザによって並列度が計算されます。並列度は、すべての関係するインスタンスで使用可能なCPUの数に、初期化パラメータPARALLEL_THREADS_PER_CPUの値を掛けたものです。

  • PARALLEL_DEGREE_POLICYLIMITEDに設定されている場合は、オプティマイザによって最適な並列度が決定されます。

PARALLEL integer

integerには、パラレル操作で使用するパラレル・スレッド数である並列度を指定します。各パラレル・スレッドは、1、2個のパラレル実行サーバーを使用します。

parallel_clauseの注意事項

parallel_clauseには、次の注意事項があります。

  • トリガーまたは参照整合性制約を定義した表に対するDML操作では、パラレル化を使用できません。

  • 索引構成表でのUPDATEまたはDELETE操作に対して、パラレル化はサポートされません。

  • 表の作成中にparallel_clauseを指定する際に、表にLOB型またはユーザー定義オブジェクト型の列が含まれている場合、このLOB型またはオブジェクト型の列を変更する後続のINSERTUPDATEDELETEおよびMERGE操作は、通知なしにシリアル実行されます。ただし、後続の問合せはパラレルで実行されます。

  • parallel_clauseの効果はパラレル・ヒントによって上書きされます。

  • リモート・オブジェクトを参照するDML文およびCREATE TABLE ... AS SELECT文は、パラレルで実行されます。ただし、リモート・オブジェクトはリモート・データベースにある必要があります。参照は、ローカル・データベースにあるオブジェクトにループバックできません。たとえば、ローカル・データベースのオブジェクトを指定するリモート・データベースのシノニムから参照することはできません。

  • LOB列を含む表でのDML操作はパラレル化できます。ただし、パーティション内並列性はサポートされていません。

    関連項目:

    パラレル化操作の詳細は、『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください。また「表の作成: パラレル化の例」も参照してください。