図2の結果から、並列度を4に指定した場合に最大3.7倍のレスポンス改善を確認できました。
今回の検証用SQLの場合、走査した結果をグループ処理、ソート処理するため、それぞれの操作が並列化され(イントラオペレーションの並列化)、さらに操作間の処理も並列化(インターオペレーションの並列化)されます。インターオペレーションの並列化により、指定した並列度の2倍のパラレル実行サーバが使用されています。
これによって、並列度を4に指定した場合、8個のパラレル実行サーバが実行されていたことになります。検証機のCPU数は4ですので、オラクル社よりパラレル処理の目安として提示されている「CPU数の2倍程度の並列度」が適した並列度であることを確認できたのではないでしょうか。
注:以下のグラフで使用する用語は以下の意味です。
PQn
nが並列度の意味(例:PQ4は並列度4のパラレル・クエリ)。
MP8
M=Month(月でレンジ)、P8=8ハッシュでのコンポジット・レンジ−ハッシュ・パーティションの意味。
IPQ
インターノード・パラレル・クエリの意味。
非パラレルおよび並列度4のパラレル・クエリを実行した際のCPU使用率を比べると図3、図4のように、パラレル・クエリにより一度に複数のプロセスで処理を分割して行うことでCPUリソースをより活用できることが分かります。
次に、Oracle RACとの組み合わせによるインターノード・パラレル・クエリの効果について確認します。図5の結果から、並列度を8に指定した場合に最大5.0倍のレスポンス改善が見られます。インターノード・パラレル・クエリにより、Oracle RACを構成している2ノード分のCPUリソースを利用することができるため、単一ノード(シングルノード)の2倍の並列度を指定したケースが最も効果を確認できる結果となりました。
ちなみに、並列度を2、4と指定したケースでは、SQLを発行したノードはクエリ・コーディネータの役割しか果たさず、片方のノードだけでパラレル実行サーバが動作する事象を確認しています。インターノード・パラレル・クエリでは複数のノードに処理を分けるオーバーヘッドとともに適切な並列度を指定しなければ、単一ノード(シングルノード)と比べても期待した効果が出ない場合があるのかもしれません。
さらに、インターノード・パラレル・クエリにて、並列度を16、32と、CPU数の2倍以上の並列度を指定した場合、図6のように、待機イベント「PX Deq: reap credit」(スレーブ・プロセスのメッセージ待ち)が増加傾向であることも確認できます。多くの並列度を指定することでCPUリソースが枯渇した状態となり、スレーブ・プロセス(パラレル実行サーバ)のメッセージの送受信にも影響を及ぼしてしまうのではないでしょうか。
Copyright © ITmedia, Inc. All Rights Reserved.