执行计划解读

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
【概述】场景+问题概述
explain输出的执行计划树形结构,怎么看顺序呢?

【背景】做过哪些操作
【现象】业务和数据库现象
【业务影响】
【TiDB 版本】
【附件】
111

如上图:
是不是同一级别的算子,看序号大小,先执行15,再执行16,最后将结果返回给父节点IndexLookUP_17的算子。
不知道理解的是否正确。

  1. TiUP Cluster Display 信息

  2. TiUP Cluster Edit Config 信息

  3. TiDB- Overview 监控

  • 对应模块日志(包含问题前后1小时日志)
1 个赞

我觉得你理解的是对的,先执行15,再执行16,然后父节点17。
参考一下这里

Build 总是先于 Probe 执行,并且 Build 总是出现在 Probe 前面。即如果一个算子有多个子节点,子节点 ID 后面有 Build 关键字的算子总是先于有 Probe 关键字的算子执行。TiDB 在展现执行计划的时候,Build 端总是第一个出现,接着才是 Probe 端。

https://docs.pingcap.com/zh/tidb/stable/explain-overview#算子的执行顺序

1 个赞

我正在读这个文章。但是感觉说的还是不够详细,例如ID表示什么,有什么意义。

1 个赞

ID是算子名,并不是那个数值。通过ID可以知道执行类型等信息。
https://docs.pingcap.com/zh/tidb/stable/explain-overview#算子简介

刚才说错了,是算子名称后面的那个数字,比如IndexRangeScan_15中的15表示什么,是顺序号吗,还是有别的含义。

我理解的是顺序号

那在树形结构里面,同一层级的各个算子,是不是后面的数字越小,表示先执行?

根据这一段描述来看,那个数值就不完全是顺序号,因为是可以并行的。

算子的结构是树状的,但在查询执行过程中,并不严格要求子节点任务在父节点之前完成。TiDB 支持同一查询内的并行处理,即子节点“流入”父节点。父节点、子节点和同级节点可能并行执行查询的一部分。

以下是来自 @数据小黑 的官方302课程口诀:从右向左,自上而下

2 个赞

:+1:

1 个赞

:+1:

1 个赞

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。