前言
关于 PEV 工具,我们所熟知的一般是 Dalibo 和 explain.depesz.com。
今天推荐的是另外一款PEV 工具:https://explain.tensor.ru/plan/,除了常规的可视化,还可以生成[1] ER 图、索引推荐等等,灰常好用。
小试牛刀

想快速筛选关键信息,可以直接查看 "statistics"

1. 最左边两列是节点执行时间 (分为包括子节点和不包括子节点) 可以用于衡量自身算子的执行时间
2. rows 则是该算子返回的实际行数,另外图片中的 ▼ 会有预估行数和实际行数的差值,比如 12.4 x = fact(5) < plan (62),表明相差了 15 倍,对于偏差较大的,一般是我们进行优化的重点关注项
3. RRbF 是 Rows Removed by Filter 的缩写,对于 RRbF 较高的,也是我们进行优化的重点关注项,说明此处算子过滤了很多的行,是否有更为高效的检索方式
4. 🔍 一列表示 additional filter for processed records,比如返回 4 行,额外的过滤条件过滤了 26 行,那么就是 26 / 26 + 4 ≈ 86.7%
5. loops 则是循环,主要关注 NLJ 的循环次数
6. 最上方则是执行时长占比,比如此处可以看到 Index Scan 特别红,耗费时间相对较多
其次,每一个算子都有相应的链接,进行解释其具体含义。在最顶部以及相应的算子层级处,还有相应的索引建议,通过 CIC 的方式创建。


可以看到,此处其建议创建一个部分多列索引。
流程图自然也少不了,分为多种形式,以官网文档为例:
The pie chart helps to easily identify the dominant nodes and the approximate ratio of their shares in resource consumption.
饼图有助于轻松识别主要节点以及其在资源消耗中所占份额的大致比例。

Tiled visualization allows you to compactly evaluate the connection of nodes in large plans and highlight the section of the query where the problem has arisen.
平铺式可视化允许你在大型执行计划中以紧凑的方式查看节点之间的连接,并突出显示查询中出现问题的部分。

Scalable execution flowcharts provide a full glimpse of the future ”performance battlefield” and see the real dependencies of nodes and resource “flows”.
可扩展的执行流程图可让你全面洞察未来的“性能战场”,并清晰地查看节点的实际依赖关系和资源“流动”。

更多细节就请自行探索吧。
小结
对于冗长的 SQL,执行计划可能满满一屏幕都看不完,人肉分析费时费力,因此我们需要借助一些工具将执行计划可视化一下,这就是 PEV,一目了然,可以迅速发现高消耗节点,着重优化这些高消耗节点,四款 PEV 工具助力你成为 SQL 优化高手。
1.https://explain.depesz.com/[2]
2.https://explain.tensor.ru/[3]
3.https://explain.dalibo.com/plan#[4]
4.https://tatiyants.com/pev/#/plans/new[5]