请斑竹解释下PCWP和PCWC,百度google了好久没有找到详尽……
select sum(object_id) from ttt group by object_typeExecution Plan
----------------------------------------------------------
Plan hash value: 774958982
类似上述这个
ID=7 PX BLOCK ITERATOR 应该是ID=8 TABLE ACCESS FULL 的父操作,为什么一个体现为PCWC,另一个体现为PCWP? ODM FINDING:
PCWP:Parallel Combined with Parent
PCWC:Parallel Combined with Child
P->P: Parallel to Parallel
P->S: Parallel to Serial
S->P: Serial to Parallel
这个我也找到,能展开解释下吗?或者有没有相关文档,我在联机帮助文档中也没有找到更详细的;没有搞懂PCWP和PCWC到底区别在什么地方 本帖最后由 不了峰 于 2014-1-26 15:01 编辑
引自崔华<基于oracle的SQL优化> p734
1. PCWP:Parallel Combined with Parent ,它表示提PCWP所在的步骤的输出(OUTPUT)会流转到它的下一个执行步骤,且PCWP所在的当前执行步骤和其下一个执行步骤处于同一组Query slave Set中,即PCWP所在的当前执行步骤和其下一个执行步骤这间不存在通过TQ做数据的传递和重新分布.
根据楼主的SQL执行计划:Id为8的执行步骤对应的列IN-OUT的值为PCWP,对应的列TQ的值为“Q1,00";
其下一个执行步骤是id=7的执行步骤,该执行步骤所在的列的值也为“Q1,00",这就表示PCWP所在的当前执行步骤和其下一个执行步骤是处理同一组query Slave Set"Q1,00"中,它们之间不存在通过TQ做数据的传递和重新分布。
2.PCWC:Parallel Combined with Child :它表示的是PCWC所在的执行步骤的输入(INPUT)来源于它的上一个执行步骤,且PCWC所在的当前执行步骤和其上一个执行步骤处理一组的Query Slave Set中,即PCWC的当前执行步骤和其上一个执行步骤之间不存在通过TQ做数据的传递和重新分布。
根据楼主的SQL执行计划,ID=7的执行步骤对应的列IN-OUT=PCWC,该执行步骤所在的列的TQ值为“Q1,00",这就表示PCWC的当前步骤和其上一个执行步骤(ID=8)是处于同一组的QUERY Slave Set中,它们之间不存在通过TQ做数据的传递和重新分布
PCWP和PCWC,P->P和P->S之间本质的区别就在于,PCWP与PCWC并不涉及象P->P与p->s那样通过TQ做数据的传递和新分布,即PCWC和PCWP并不存在query slave set 间的数据交互,所以并行执行计划中即使出现过多的PCWP和PCWC也是没有关系的。
但 如果出现过多的P->P 和P->S,那就要考虑这个并行执行计划是否有改进的余地了。因为过多的query slave set 间以及query slave set 和QC间通过TQ做数据的传递与重分布会严重影响并行执行计划的效率 。 parallel to serial ( P -> S)
从并行进程向串行进程发送一个操作,通常为服务进程向并行协调进程发送数据。
parallel to parallel (P->P)
表示从并行操作向另一个并行操作发送数据,通常连接为两个从属进程之间的数据交流。
parallel combined with parent (PCWP )
同一个从属进程执行的并行操作,同时父进程也是并行的。
parallel combined with child (PCWC)
同一个从属进程执行的并行操作,同时子操作也是并行的。
serial to parallel (S-P)
一个串行操作给并行操作发送数据,例如insert 端使用了并行,后续的select端采用了serial的串行机制。 那可不可以这么认为,pcwc和pcwp本质上并没有区别,只是为了说明当前步骤和其父操作或者子操作同属一个并行从属进程集? 不了峰 发表于 2014-1-26 14:54 static/image/common/back.gif
引自崔华<基于oracle的SQL优化> p734
1. PCWP:Parallel Combined with Parent ,它表示提PCWP所在的步骤 ...
谢谢!!!!
页:
[1]