Search

Top 60 Oracle Blogs

Recent comments

"PX Deq Credit: send blkd" アイドルイベント?

PX Deq Credit: send blkdイベントの検証

パラレル度=1で
test1. insert into lineitem_work (select /*+ parallel(L 1) */ * from lineitem L)
パレレル度=40で
test2. insert into lineitem_work (select /*+ parallel(L 40) */ * from lineitem L)

cpu sec elapsed(sec)
test1 8.92 25.53
test2 0.00 60.19

実行時間は2.4倍パラレルのほうが遅くなる。

test2での問題待機イベントは:


Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
PX Deq: Execution Msg 16 0.01 0.21
Disk file operations I/O 1 0.03 0.03
direct path read 16 0.00 0.04
PX Deq Credit: send blkd 1777 2.01 59.63
PX qref latch 4 0.00 0.00
PX Deq Credit: need buffer 15 0.00 0.09
asynch descriptor resize 11 0.00 0.00

前回のテストでも出てきたPX Deq Credit: send blkdだ。

selectがparallelでもInsertがnon parallelだとこうなる。
そこで、InsertもParallelにしてみる、
test3. ALTER SESSION FORCE PARALLEL DML PARALLEL 40;

cpu sec elapsed(sec)
test1 8.92 25.53
test2 0.00 60.19
test3 0.12 10.05

待機イベントPX Deq Credit: send blkdもなくなった:


Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
SQL*Net message to client 2 0.00 0.00
SQL*Net message from client 2 27.71 34.72
PX Deq: Join ACK 30 0.00 0.00
PX Deq: Parse Reply 30 0.01 0.06
PX Deq: Execute Reply 455 0.13 8.76
Disk file operations I/O 2 0.04 0.04
rdbms ipc reply 34 0.00 0.00
reliable message 30 0.00 0.00
enq: CR - block range reuse ckpt 30 0.84 1.07
PX Deq: Signal ACK RSG 1 0.00 0.00

appendヒントをつけてdirect path writeに変えてみる:
test4. insert /*+ append */ into lineitem_work (select /*+ parallel(L 40) */ * from lineitem L)

またPX Deq Credit: send blkd待機イベントで待ちが発生した:


Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
PX Deq: Execution Msg 16 0.01 0.14
direct path read 16 0.01 0.05
PX Deq Credit: send blkd 1765 0.02 7.69
asynch descriptor resize 15 0.00 0.00
PX Deq Credit: need buffer 21 0.00 0.06
PX qref latch 1 0.00 0.00

そこで、DMLもパラレルにして、
test5. ALTER SESSION FORCE PARALLEL DML PARALLEL 40;

cpu sec elapsed(sec)
test1 8.92 25.53
test2 0.00 60.19
test3 0.12 10.05
test4 0.10 08.14
test5 0.00 09.09

あれ?遅くなった。でもdirect path writeで遅くなったのだから、ディスクの問題です:


Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
PX Deq: Execution Msg 17 0.10 0.12
Disk file operations I/O 3 0.00 0.00
direct path read 41 0.01 0.08
buffer busy waits 3 0.08 0.09
direct path write 63 0.21 7.23
asynch descriptor resize 12 0.17 1.26
reliable message 1 0.00 0.00
rdbms ipc reply 1 0.00 0.00

parallelでdirect path writeを「問題なく」行うディスク環境は?Readの2倍以上だよな???

最後に、

"PX Deq Credit: send blkd"はアイドルイベントとして扱われるみたいだが、Parallel Queryのチューニングでは重要なイベントです。