逐段分析“大象”

如果您定期调试PostgreSQL查询性能,并且EXPLAIN (ANALYZE, BUFFERS) ...是了解该DBMS特性的最喜欢的工具,那么我们的服务用于计划的可视化和分析的新的有用“芯片”说明了。tensor.ru在这个困难的任务中肯定会派上用场。



但是,让我立即提醒您,如果不对PostgreSQL数据库进行全面的全面监视,则仅使用计划分析是从5号贤者的位置开始!





[来源KDPV“盲人与大象” ]



, 1940





, ,



.

,

,

, .







, —

.



,

:



!



,

,

, ,

.



,

,

,

.



盲人之间发生了争执,

并持续了整整一年。

然后,盲人终于

动了动手。



而且由于第五个强壮,

-他闭上了所有人的嘴。

现在,大象由

一条尾巴组成


因此,今天在程序中:



  • 将“人字形”更改为“肩带”
  • 我们汇集了“大型”计划
  • 我们保留个人档案
  • 研究计划的谱系
  • 凝视着“窗户”


没有单一的颜色!



从历史上看,在查看计划时,我们在值的左侧用垂直“ V形”标记“最热”节点-值越高,颜色越丰富。







但是在这样的模型中,人们很难感知值的比率-例如,只有训练有素的眼睛才能注意到深浅差异的30%偏差。因此,我们从水平的“肩带”制作了直方图







“大型”计划的有用统计数据



许多人没有注意到该计划的“统计”标签,而是在右侧:





无论谁注意到,几乎都没有积极使用它。我们决定更正此遗漏,并使其真正对分析“大型”计划(100多个节点)有用



分组节点



所有“相同”计划节点(即,具有相同节点类型,使用的表和索引的那些计划节点)都分组为一个表行。此外,它们的所有指标(执行时间,已读取和已丢弃记录的数量,通过的总数和已读取的数据量)都将相加。



为了清楚起见,每个节点类型都带有一个颜色标签:



  • -读取数据

    的节点Seq ScanIndex ScanCTE Scan和其他各种... Scan
  • 黄色-数据处理

    节点SortUniqueAggregateGroupMaterialize,...
  • 绿色-连接

    节点Nested LoopMerge JoinHash Join,...




按任何指标排序



例如,如果突然您需要的不是按总时间而是按节点类型进行分析,只需单击列标题即可,一切将如下:







上下文节点提示



要详细了解组中特定节点的贡献,请将鼠标悬停在其中的任何一个上,您会看到传统的提示,说明那里到底发生了什么:







计划个人档案

“无需注册和短信!”



如果您积极使用我们的服务,现在可以更轻松地找到以前分析过的计划-只需切换到存档中“我的”标签即可无论普通存档中的出版物是什么,计划都属于此处,并且仅对您可见。





计划谱系



以前,在存档中很难找到特定的计划,现在很简单。它们可以被命名并分组为优化的“家谱”!



只需在添加计划时指定一个名称即可:







...或在现有计划上,可以对其进行设置,编辑或添加链接的计划:







然后您可以快速切换整个选项树以评估某些优化的效果:







并且如果突然链接到特定计划丢失后,可以通过个人档案中的名字轻松识别他:





我们窥视“窗户”



Query Profiler的一个小而有用的增强,这是我之前写的-我们教它“观察窗口”并正确映射以计划节点:



->  WindowAgg   ==>  WINDOW / OVER
      ->  Sort  ==>    PARTITION BY / ORDER BY


...作为WINDOW单个查询中“ window”()的几个独立定义







...并在没有显式定义的情况下在窗口函数中排序:







高兴地寻找各种低效率!



All Articles