【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001500476
阅读了上面链接后,还是分不清楚, 从执行计划看,怎么看出是一个DFO 还是两个DFO呢??
或者从哪个算子 上能直接看出来呢 ?
同问
在执行计划生成的最后阶段,以 EXCHANGE
节点为界,拆分成多个子计划,每个子计划被封装成为一个 DFO,在并行度大于 1 的场景下,会一次调度两个 DFO,依次完成 DFO 树的遍历执行;在并行度等于 1 的场景下,每个 DFO 会将产生的数据存入中间结果管理器,按照后序遍历的形式完成整个 DFO 树的遍历执行。
目前PX的基础调度方式是两DFO调度:即自底向上,自左向右,依次调度每一对DFO,当前DFO执行完成之后才会调度下一个DFO执行。
对于该计划,PX首先会调度T1 NLJ T2的这一对DFO执行,等T1表的数据发送完成之后就会调度NLJ T3的DFO执行。
由于limit算子在最后一个DFO,所以它只能提前结束最后一对DFO的执行,对于之前调度的DFO,仍然需要完整执行计划,即T1表需要扫描全表的数据量。
1 个赞
使用按个关键字 确定 是 1个 DFO 吗 ? 或者两个DFO 同时启动的
boradcast 判断启动了 两个DFO
以 EXCHANGE
节点为界,拆分成多个子计划,每个子计划被封装成为一个 DFO
对于该计划,PX首先会调度T1 NLJ T2的这一对DFO执行,等T1表的数据发送完成之后就会调度NLJ T3的DFO执行。
但从执行计划能看出 并行度 是几不 ?DOP
explain extended 详细的执行计划 下面的output详情 会有说明