パラレル度=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のチューニングでは重要なイベントです。
Recent comments
16 weeks 4 days ago
26 weeks 3 days ago
28 weeks 1 day ago
31 weeks 2 days ago
33 weeks 4 days ago
43 weeks 1 day ago
44 weeks 4 days ago
45 weeks 5 days ago
45 weeks 6 days ago
48 weeks 4 days ago