原文:[POSTGRES QUERY PLAN VISUALIZATION](http://tatiyants.com/postgres-query-plan-visualization/
作者:ALEX TATIYANTS
翻译:Vincent
译者注:Postgres的EXPLAIN查看执行计划已经非常的直观、全面,不过有人更钟情于图形化的展示,本文作者就介绍了这样一个项目,以图形化的方式帮助用户查看查询计划。以下为译文。
最近做了一次对查询的优化之后,我发现了一种更好的方式来查看由EXPLAIN生成的查询计划。因此,我最终决定需要做些什么,结果就是Postgres EXPLAIN Visualizer工具(或者叫Pev):
![](http://i.imgur.com/A4e6vaV.png)
为什么创造Pev
我想要一款能让用户很轻松的就可以理解查询计划变工具,而且能让用户看上去很直观。说的再具体一点,就是我想要:
- 最小的视觉干扰
- 获取更多的信息
- 可定制化程度较高
- 在查询的上下文中执行计划
让我们看看Pev是如何实现这些要求的。我将使用下面插图中的查询语句生成的计划(作为对比结果,你可以在dellstore2 数据库执行这个查询语句):
![](http://i.imgur.com/dCmlkf2.png)
我注意到Pev只使用JSON格式的解释计划。使用以下代码就可以满足要求了:
![](http://i.imgur.com/Oqa7DO3.png)
节点可视化
首先,Pev使用了经典的树状图从而将查询计划以可视化的方式展现出来。我发现这比PgAdmin使用的从左到右的树状图更容易查看。
![](http://i.imgur.com/cVk3agQ.png)
默认情况下,每个节点都显示其类型以及相关的详细信息(比如正在扫描的对象或连接条件)、持续时间和关键信息(比如该节点是否为某种类型的异常):
![](http://i.imgur.com/8pc6Aza.png)
说到客户获取的信息量,Pev目前正在计算以下两个因素:
- 异常值节点(最大、最慢、最昂贵)
- 有错误计划估计的节点(计划者可能会错过100个或更多)
Pev还允许进行各种定制,比如显示计划者的估算细节,用图表来展示行、持续时间或成本:
![](http://i.imgur.com/ItJflTW.png)
如果用户想要看到所有Postgres节点的所有内容,只需单击标题获得扩展视图即可:
![](http://i.imgur.com/cBhJSsz.png)
使用这些定制化功能(在左边的设置菜单中可用),用户可以很容易地创建各种图形,比如下面这个图形就显示了每个节点的运行速度有多快:
![](http://i.imgur.com/CVrxqUY.png)
查询显示
我个人觉得很难将我所看到的这个计划映射到生成它的查询。通过在节点旁边显示查询,并在可能的地方突出显示相关部分,Pev可以帮助您实现这一点。只需单击该节点内的蓝色数据库图标:
![](http://i.imgur.com/5FIgeXz.png)
我必须承认,在这一点上,突出查询的相关部分是非常基本的,但我希望它在将来能够得到改进。
explain.depesz.com是一个非常优秀的网站,而且它对Pev产生了很重大的影响。我就是在使用该网站以及阅读该网站帮助文档的过程中学到了很多关于Postgres计划是如何工作的原理。
如果你正在使用Pev,请在twitter上面@alexTatiyants,让我知道你有多喜欢它。如果你想让它变得更好,代码就在github上,你可以做一点贡献。