Oracle Databaseでは、データベース起動時のCPU_COUNT
とPARALLEL_THREADS_PER_CPU
の値に基づいて、パラレル実行パラメータのデフォルトを計算します。パラメータを手動でチューニングして、特定のシステム構成またはパフォーマンス目標に合うように値を増減することもできます。次に例を示します。
パラレル実行がまったく使用されないシステムではPARALLEL_MAX_SERVERS
を0に設定できます。
豊富なSGAメモリーを備えた大規模システムでは、スループットを高めるためにPARALLEL_EXECUTION_MESSAGE_SIZE
を増やすことができます。
パラレル実行パラメータを手動でチューニングすることもできます。パラレル実行はデフォルトで有効になっています。
パラレル実行の初期化とチューニングには次の手順が含まれます。
デフォルトでは、Oracle Databaseによってパラレル実行パラメータが自動的に表8-3のように設定されます。
パラメータ | デフォルト | 備考 |
---|---|---|
|
|
パラレル実行によりSQLの並列度(DOP)リクエストの数を制限し、システムのオーバーロードを回避します。 |
|
|
自動DOPが使用された場合に、文に許可されるDOPの最大値を制御します。 |
|
|
自動DOP、パラレル文のキューイングおよびメモリー内パラレル実行を使用するかどうかを制御します。デフォルトでは、これらの機能はすべて無効化されています。 |
|
16KB |
パラレル実行サーバー、およびパラレル実行サーバーと問合せコーディネータの通信に使用されるバッファのサイズを指定します。これらのバッファは、共有プールの中から割り当てられます。 |
|
|
パラレル実行を現在のOracle RACインスタンスに制限します。 |
|
1インスタンスに対するパラレル実行プロセスとパラレル・リカバリ・プロセスの最大数が指定されます。需要が増加すると、インスタンスの起動時に作成されたプロセス数から、最大でこの値までプロセス数が増やされます。 このパラメータの設定が低すぎると、問合せが処理中に十分なパラレル実行プロセスを得られない場合があります。設定が高すぎると、ピーク時にメモリー・リソース不足が発生してパフォーマンスが低下する可能性があります。 |
|
|
0 |
Oracle Databaseの起動時に、パラレル実行のために起動および予約するパラレル実行プロセス数を指定します。この設定の値を大きくすると、パラレル文の起動コストを均衡化するのに役立ちますが、パラレル実行プロセスはデータベースが停止されるまで削除されないため、必要なメモリー使用量は増大します。 |
|
0 |
パラレル実行に必要なリクエストされたパラレル実行プロセスの最小パーセンテージを指定します。デフォルト値は0で、使用可能なパラレル・サーバー・プロセスがない場合、パラレル文はシリアルで実行されます。 |
|
10秒 |
オプティマイザによって見積もられた実行時間を指定します。これより大きい値の場合、文は自動パラレル問合せおよび自動DOP導出の候補となります。 |
|
パラレル文のキューイングが使用されるまでに問合せを実行するのに使用可能なパラレル実行サーバー・プロセスの数を指定します。文のキューイングは、 |
|
|
2 |
パラレル実行中にCPUが処理できるパラレル実行プロセスまたはスレッドの数を示します。 |
一部のパラメータの設定方法によってはOracle Databaseが制約を受けるので注意してください。たとえば、PROCESSES
を20に設定すると、25個の子プロセスを取得できなくなります。
関連項目: 初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。 |
パラレルで実行する必要があるが、表に対するDOPの設定または関連する問合せの変更を避けたい場合は、次の文を使用して並列処理を強制できます。
ALTER SESSION FORCE PARALLEL QUERY;
この後のすべての問合せは、制限に違反しないかぎりパラレルで実行されます。DML文およびDDL文も強制できます。この句は、セッションの後続の文に指定されるすべてのパラレル句よりも優先されますが、パラレル・ヒントに対しては優先されません。
たとえば、一般的なOLTP環境では表にはパラレルの設定がありませんが、毎晩バッチ・スクリプトを使用してこのような表からデータをパラレルで収集する場合があります。セッション中にDOPを設定することで、ユーザーは、各表をパラレルで変更してから、終了時にシリアルに戻す必要がなくなります。