pev Pev:Postgres的可视化工具
作者| ALEX TATIYANTS
翻译|文森特
【pev Pev:Postgres的可视化工具】译者注:Postgres的解释检查执行计划非常直观和全面,但有些人更喜欢图形显示。本文作者介绍了这样一个项目,帮助用户以图形化的方式查看查询计划。
在最近的一次查询优化之后,我找到了一个更好的方法来查看由解释生成的查询计划。所以,我最终决定了需要做什么,结果就是Postgres EXPLAIN Visualizer工具(或者Pev):
文章图片
为什么要创建Pev
我想要一个能让用户轻松理解查询计划变化的工具,让用户看起来很直观。更具体地说,我想:
最小视觉干扰
获取更多信息
定制化程度高
在查询的上下文中执行计划
让我们看看Pev是如何满足这些要求的。我将使用下图中查询语句生成的计划(作为比较结果,您可以在戴尔商店2数据库中执行该查询语句):
文章图片
我注意到Pev只是用JSON格式来说明计划。使用以下代码来满足要求:
节点可视化
首先,Pev使用经典的树形图来可视化查询计划。我发现这比PgAdmin使用的从左到右的树形视图更容易查看。
文章图片
默认情况下,每个节点都显示其类型和相关的详细信息(如被扫描的对象或连接条件)、持续时间和关键信息(如该节点是否是某种类型的例外):
文章图片
谈到客户获得的信息量,Pev目前正在计算以下两个因素:
离群节点(最大、最慢、最昂贵)
计划估算不正确的节点(计划者可能遗漏100个或更多)
Pev还允许各种自定义,例如显示计划员的估算详细信息,以及用图表显示线条、持续时间或成本:
文章图片
如果用户想要查看所有Postgres节点的所有内容,只需单击标题即可获得扩展视图:
文章图片
使用这些定制功能(在左侧的设置菜单中提供),用户可以轻松创建各种图形。例如,下图显示了每个节点的运行速度:
文章图片
查询显示
就我个人而言,我发现很难将我看到的计划映射到生成它的查询。Pev可以通过在节点旁边显示查询并在可能的地方突出显示相关部分来帮助您实现这一点。只需单击此节点中的蓝色数据库图标:
文章图片
我必须承认,在这一点上,突出查询的相关部分是非常基本的,但我希望以后可以改进。
Explain.depesz.com是一个优秀的网站,对Pev的影响很大。在使用这个网站和阅读它的帮助文档的过程中,我刚刚了解了很多关于Postgres程序是如何工作的。
如果你正在使用Pev,请在推特上发布@alexTatiyants,让我知道你有多喜欢它。如果你想做的更好,代码在GitHub上,可以做贡献。