2018.03.22
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の数を増加させるので、使用することは、パフォーマンスの低下を誘発するのです。
上記のようにActive Sessionが急増している区間が存在します。
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の実行過多を解決します。