Oracle执行计划中 并行和BUFFER SORT的问题
admin
2023-05-10 10:21:52
0

   近日开发说某个系统上有个sql执行时间忽快忽慢,让我帮忙看下,此sql是4个表(2个千万,2个十万)进行inner join操作,最后进行count(*)聚合操作,执行时间1--10S不等。查看执行计划发现使用了PX并行和BUFFER SORT操作,难怪忽快忽慢的,但是sql并没有显式加parallel,参数parallel_server也没有启用,这个并行和BUFFER SORT是从那来的呢?


下面通过实验来重现上面的情况:

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(积卡尔积会产生这个):

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个小表加上rowid >= '0'的条件,让表通过index rowid扫描走hash join连接,稳定在1S内返回结果。


疑问:原sql的PX并行是如何来的,一直没有重现出。


相关内容

热门资讯

以军士兵集体丢掉武器抗命,大喊... 据凤凰卫视报道,以色列国防军一军事基地7月30日发生士兵抗命事件,约120名士兵抗议指挥官做法,将武...
蒋成华任商务部副部长 国务院任免国家工作人员。任命蒋成华为商务部副部长。免去蒋成华的商务部国际贸易谈判副代表职务。
伊朗驻华大使:在军事威胁下,不... 新华社北京7月31日电(记者刁慧琳) 伊朗驻华大使法兹里7月28日表示,伊美回到谈判桌的前提是美国必...
伊朗革命卫队在霍尔木兹海峡击中... 当地时间31日,伊朗伊斯兰革命卫队发布声明称,革命卫队海军当天在霍尔木兹海峡击中并扣留了两艘违反禁令...
美媒:特朗普,遇到了一个更强硬... 据《纽约时报》7月29日报道,就在特朗普总统看似放弃战事升级计划几天后,美国再次与伊朗交火。上周末,...
女子做气管镜时不幸身亡,丈夫称... 7月29日,西安刘先生反映妻子在当地医院做支气管镜检查时死亡,看监控时发现医生疑有违规操作。刘先生表...
全网“帮卖西瓜”,然后呢? 近日,河南部分地区西瓜滞销的消息在网上热度很高。很多地方也伸出援手:有景区收购千斤西瓜、免费赠予游客...
美媒:乌克兰袭击伊朗船只,险引... 据《纽约时报》7月28日报道,据伊朗和西方官员称,伊朗曾考虑攻击乌克兰的一个港口,以报复乌克兰对一艘...
20年里,他只画美女,用东方风... 迈进KIM在上海的工作室,迎面是一整墙的美女们。她们像是刚从一场时髦的沙龙里退场,或倚或立,眉宇间是...
Google在港推出AI代理G... 观点网讯:7月29日,Google在香港推出AI代理Gemini Spark,该代理可全天候在后台运...