日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Oracle执行计划中 并行和BUFFER SORT的问题

發(fā)布時(shí)間:2024/4/14 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle执行计划中 并行和BUFFER SORT的问题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ?近日開發(fā)說(shuō)某個(gè)系統(tǒng)上有個(gè)sql執(zhí)行時(shí)間忽快忽慢,讓我?guī)兔聪?#xff0c;此sql是4個(gè)表(2個(gè)千萬(wàn),2個(gè)十萬(wàn))進(jìn)行inner join操作,最后進(jìn)行count(*)聚合操作,執(zhí)行時(shí)間1--10S不等。查看執(zhí)行計(jì)劃發(fā)現(xiàn)使用了PX并行和BUFFER SORT操作,難怪忽快忽慢的,但是sql并沒(méi)有顯式加parallel,參數(shù)parallel_server也沒(méi)有啟用,這個(gè)并行和BUFFER SORT是從那來(lái)的呢?


下面通過(guò)實(shí)驗(yàn)來(lái)重現(xiàn)上面的情況:

1. PX并行和BUFFER SORT:

select /*+ parallel(e 4) parallel(d 4) */ e.ename, d.dname

? from scott.emp e, scott.dept d,scott.emp m

?where e.deptno = d.deptno

? ?and d.deptno = m.deptno

? ?and e.deptno = 10;


Execution plan:

----------------------------------------------------------------------------

| Id ?| Operation ? ? ? ? ? ? ? ? ?| Name ? ? | ? ?TQ ?|IN-OUT| PQ Distrib |

----------------------------------------------------------------------------

| ? 0 | SELECT STATEMENT ? ? ? ? ? | ? ? ? ? ?| ? ? ? ?| ? ? ?| ? ? ? ? ? ?|

| ? 1 | ?PX COORDINATOR ? ? ? ? ? ?| ? ? ? ? ?| ? ? ? ?| ? ? ?| ? ? ? ? ? ?|

| ? 2 | ? PX SEND QC (RANDOM) ? ? ?| :TQ10003 | ?Q1,03 | P->S | QC (RAND) ?|

|* ?3 | ? ?HASH JOIN BUFFERED ? ? ?| ? ? ? ? ?| ?Q1,03 | PCWP | ? ? ? ? ? ?|

| ? 4 | ? ? PX RECEIVE ? ? ? ? ? ? | ? ? ? ? ?| ?Q1,03 | PCWP | ? ? ? ? ? ?|

| ? 5 | ? ? ?PX SEND BROADCAST ? ? | :TQ10001 | ?Q1,01 | S->P | BROADCAST ?|

| ? 6 | ? ? ? PX SELECTOR ? ? ? ? ?| ? ? ? ? ?| ?Q1,01 | SCWC | ? ? ? ? ? ?|

| ? 7 | ? ? ? ?TABLE ACCESS FULL ? | EMP ? ? ?| ?Q1,01 | SCWP | ? ? ? ? ? ?|

|* ?8 | ? ? HASH JOIN ? ? ? ? ? ? ?| ? ? ? ? ?| ?Q1,03 | PCWP | ? ? ? ? ? ?|

| ? 9 | ? ? ?JOIN FILTER CREATE ? ?| :BF0000 ?| ?Q1,03 | PCWP | ? ? ? ? ? ?|

| ?10 | ? ? ? BUFFER SORT ? ? ? ? ?| ? ? ? ? ?| ?Q1,03 | PCWC | ? ? ? ? ? ?|

| ?11 | ? ? ? ?PX RECEIVE ? ? ? ? ?| ? ? ? ? ?| ?Q1,03 | PCWP | ? ? ? ? ? ?|

| ?12 | ? ? ? ? PX SEND HYBRID HASH| :TQ10000 | ? ? ? ?| S->P | HYBRID HASH|

|* 13 | ? ? ? ? ?TABLE ACCESS FULL | DEPT ? ? | ? ? ? ?| ? ? ?| ? ? ? ? ? ?|

| ?14 | ? ? ?PX RECEIVE ? ? ? ? ? ?| ? ? ? ? ?| ?Q1,03 | PCWP | ? ? ? ? ? ?|

| ?15 | ? ? ? PX SEND HYBRID HASH ?| :TQ10002 | ?Q1,02 | P->P | HYBRID HASH|

| ?16 | ? ? ? ?JOIN FILTER USE ? ? | :BF0000 ?| ?Q1,02 | PCWP | ? ? ? ? ? ?|

| ?17 | ? ? ? ? PX BLOCK ITERATOR ?| ? ? ? ? ?| ?Q1,02 | PCWC | ? ? ? ? ? ?|

|* 18 | ? ? ? ? ?TABLE ACCESS FULL | EMP ? ? ?| ?Q1,02 | PCWP | ? ? ? ? ? ?|

----------------------------------------------------------------------------


2. BUFFER SORT(積卡爾積會(huì)產(chǎn)生這個(gè)):

select e.ename, d.dname

? from scott.emp e, scott.dept d;


Execution plan:

----------------------------------------------------------------------------------

| Id ?| Operation ? ? ? ? ? ? ?| Name ? ? ? ?| Rows ?| Bytes |Cost (%CPU)| Time ?|

----------------------------------------------------------------------------------

| ? 0 | SELECT STATEMENT ? ? ? | ? ? ? ? ? ? | ? ? ?| ? ? ? |11 (100)| ? ? ? ? ?|

| ? 1 | ?MERGE JOIN CARTESIAN ?| ? ? ? ? ? ? | ?95 ?| 57780 |11 ? (0)| 00:00:01 |

| ? 2 | ? TABLE ACCESS FULL ? ?| DEPT ? ? ? ?| ? ?5 | ? 324 | 2 ? (0)| 00:00:01 |

| ? 3 | ? BUFFER SORT ? ? ? ? ?| ? ? ? ? ? ? | ? 19 | ? 856 | 9 ? (0)| 00:00:01 |

| ? 4 | ? ?INDEX FAST FULL SCAN| PK_EMP ? ? ?| ? 19 | ? 856 | 0 ? (0)| ? ? ? ? ?|

----------------------------------------------------------------------------------


查看Oracle的解釋:

? ?The BUFFER SORT operation indicates that the database is copying the data blocks obtained by the scan of pk_emp from the SGA to the PGA. This strategy avoids multiple scans of the same blocks in the database buffer cache, which would generate many logical reads and permit resource contention.


? ?最后的解決方法:給其中的2個(gè)小表加上rowid >= '0'的條件,讓表通過(guò)index rowid掃描走h(yuǎn)ash join連接,穩(wěn)定在1S內(nèi)返回結(jié)果。


疑問(wèn):原sql的PX并行是如何來(lái)的,一直沒(méi)有重現(xiàn)出。


轉(zhuǎn)載于:https://blog.51cto.com/srsunbing/1630138

總結(jié)

以上是生活随笔為你收集整理的Oracle执行计划中 并行和BUFFER SORT的问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。