特定の並列度(DOP)をOracle Databaseからリクエストできます。たとえば、テーブルまたはインデックス レベルで固定 DOP を設定できます。
例:
ALTER TABLES sales PARALLEL 8;
ALTER TABLE customers PARALLEL 4;
この場合、sales テーブルのみにアクセスするクエリは要求された DOP 8 を使用し、customers テーブルにアクセスするクエリは 4 の DOP を要求します。サーバー (プロデューサーまたはコンシューマー); 異なるDOPが指定されるたびに、Oracle Databaseはより高いDOPを使用します。
PARALLEL 句が指定されているが、並列度がリストされていない場合、オブジェクトはデフォルトの DOP を取得します。デフォルトの並列処理では、次のように、式を使用してシステム構成に基づいて DOP を決定します。
単一のインスタンスの場合、
DOP = PARALLEL_THREADS_PER_CPU x CPU_COUNT
Oracle RAC 構成の場合、
DOP = PARALLEL_THREADS_PER_CPU x CPU_COUNT x INSTANCE_COUNT
デフォルトでINSTANCE_COUNT
は、クラスター内のすべてのノードです。ただし、Oracle RACサービスを使用してパラレル操作を実行できるノード数を制限した場合、参加ノード数はそのサービスに属するノード数になります。たとえば、各ノードに 8 個の CPU コアがあり、Oracle RAC サービスがない 4 ノードの Oracle RAC クラスタでは、default DOP would be 2 x 8 x 4 = 64
.
デフォルトの DOP アルゴリズムは、最大限のリソースを使用するように設計されており、より多くのリソースを使用できれば操作がより速く終了すると想定しています。デフォルトの並列処理は、単一ユーザーのワークロードを対象としています。マルチユーザー環境では、デフォルトの並列処理は推奨されません。
オプティマイザーは、ステートメントのリソース要件に基づいてステートメントの DOP を自動的に決定します。オプティマイザは、実行計画のすべてのスキャン操作 (全表スキャン、索引高速全スキャンなど) のコストを使用して、ステートメントに必要な DOP を決定します。
ただし、オプティマイザは実際の DOP を制限して、並列サーバー プロセスがシステムを圧倒しないようにします。この制限は、パラメーターによって設定されますPARALLEL_DEGREE_LIMIT.
簡潔にするために、重要な部分をここにリストしました。
これらすべてと、公式のOracleドキュメントでの詳細 -
http://docs.oracle.com/cd/E11882_01/server.112/e25523/parallel002.htm#BEICCFIE
これは非常に興味深い設定です。非常に役立つので、すべてを確認することをお勧めします。