- 最后登录
- 2022-10-11
- 在线时间
- 137 小时
- 威望
- 163
- 金钱
- 1477
- 注册时间
- 2012-1-10
- 阅读权限
- 50
- 帖子
- 217
- 精华
- 1
- 积分
- 163
- UID
- 158
|
4#
发表于 2014-1-26 14:54:30
本帖最后由 不了峰 于 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做数据的传递与重分布会严重影响并行执行计划的效率 。 |
|