PostgreSQL EXPLAIN 可视化工具

将 EXPLAIN ANALYZE JSON 转为易读的计划树,附带耗时、估算和缓冲区信息

输入

粘贴 EXPLAIN (FORMAT JSON) 的输出。也支持带 QUERY PLAN 表头和 + 续行标记的 psql 输出。

最大 5 MB,在浏览器中分析,绝不保存。

摘要

粘贴 PostgreSQL EXPLAIN 执行计划

运行下面的命令,把 JSON 结果粘贴到左侧,或加载一个示例。

推荐命令

EXPLAIN (
  ANALYZE,
  BUFFERS,
  SETTINGS,
  WAL,
  VERBOSE,
  FORMAT JSON
)
SELECT ...;

ANALYZE 会真正执行语句。请用 BEGIN 和 ROLLBACK 包裹 INSERT、UPDATE 或 DELETE。

执行计划

粘贴有效的执行计划后,这里会显示计划树。

等待 EXPLAIN 执行计划。

显示内容

PostgreSQL EXPLAIN Visualizer 将 EXPLAIN (FORMAT JSON) 输出转换为可折叠的计划树、可排序的节点表和格式化的原始 JSON。摘要显示执行时间与规划时间、节点数、最慢节点、最大的行数估算偏差以及从共享缓冲区之外读取的块数。选择任意节点即可查看 PostgreSQL 报告的全部字段。

如何采集执行计划

运行 EXPLAIN (ANALYZE, BUFFERS, SETTINGS, WAL, VERBOSE, FORMAT JSON) 加上你的查询,然后粘贴结果。带 QUERY PLAN 表头、+ 续行标记和行数页脚的 psql 输出会被自动清理。ANALYZE 会执行语句,因此请用 BEGIN 和 ROLLBACK 包裹 INSERT、UPDATE 和 DELETE。未使用 ANALYZE 的计划仍会显示成本和估算,但会跳过基于时间的发现。

指标如何计算

总耗时等于每次循环的实际时间乘以循环次数;在 Gather 节点之下会除以进程数,避免重复计算并行工作。自身耗时减去子节点的总耗时并不低于零,因此在并行计划、CTE、InitPlan 和 SubPlan 中是近似值。估算倍数比较每次循环的实际行数与估算行数。EXPLAIN 中的缓冲区计数包含子节点,因此自身值已扣除子节点。块大小按默认的 8 kB 计算。

发现及其局限

发现是基于计划数字的观察:较大的行数估算偏差、内侧执行次数很多的 Nested Loop、丢弃大部分行的顺序扫描、溢出到磁盘的排序和哈希、临时文件、来自共享缓冲区之外的读取,以及占据大部分执行时间的节点。建议都很审慎,从不点名要创建的具体索引,因为仅凭执行计划无法看出查询频率、写入负载或数据分布。

隐私

执行计划可能暴露表名、模式名、谓词和字面值。计划在你的浏览器中解析,大型计划在 Web Worker 中处理,绝不会上传、记录或保存。只会记住所选的视图(树、表格或原始)。

CodingTool 已正式上线于

Launched on StartupBaseCodingTool.dev - Free, Fast & Easy Developer Tools in One Place | Product HuntCodingTool - Featured on Startup FameFazier badgeListed on Turbo0Featured on Twelve ToolsFeatured on Findly.toolsLaunchpadly Startup DirectoryCodingTool.dev — Featured on Smol Launch