Parallel query

基本情報

Parallel Queryは同時接続、同時使用が多いOLTP環境ではなく、配置やDW環境では、クエリの処理性能を向上させる目的で使用されます。 Parallel QueryはParallel Hintを使用したり、オブジェクトの生成時にdegreeを指定することで使用し、Full Table Scan、Index Fast Full Scan、Hash Join、partition tableのLocal Index Scanなどの場合に使用することができます。

 

オブジェクトの作成時のDegree指定

 

Create table Test
Parallel (Degree 5)
(id number(2), name varchar2(20));

 

Parallel Hint使用

 

Select /*+ Parallel(test,4) */ *
From test;

 

分析事例

 

不適切なDegree設定によるParallel Query実行過多

 

テーブルの作成時にParallel DegreeとInstances値がdefaultに設定されており、インデックスの使用が可能なSQLにもかかわらずfull table scanが発生しParallelで実行されて、パフォーマンスの低下が発生しました。DWやバッチプログラムで大容量の処理速度を向上させるためにParallel Queryを使用するか、OLTP環境では、CPU使用率とActive Sessionの数を増加させるので、使用することは、パフォーマンスの低下を誘発するのです。

5_1_1

上記のようにActive Sessionが急増している区間が存在します。

5_1_2

PX DEQで始まる待機イベントはParallel関連なので、Parallelで同時にSQL文が実行時され、Slaveプロセスが起動し、Active Sessionが増加することを類推することができます。セッションが実行しているSQL文は、同じSQLでParallel Hintが明示されていないにもかかわらず、Parallelで行われました。(確認した結果、SQLステートメントが照会しているTableのDegreeが設定されていました。)

alter table TEST parallel ( degree 1 );

上記のように、tableのParallel degreeを1に変更してParallel Queryの実行過多を解決します。