Neatbo.

包含式节点时间不能相加

先区分循环平均数、父节点包含的工作与并行重叠,再理解记录的计划指标和客户端等待时间。

数据库测量与客户端等待是不同区间

原作者的 Seq Scan 约349毫秒、Execution 约463毫秒,却在 pgAdmin 和 JDBC 观察到30或45秒。作者评论说明连接在本机,这仍没有消除结果传输和客户端处理的工作。

执行计划可以帮助检查数据库实际做了什么,但不能仅凭这个差距宣称数据库已经无需优化。客户端区间和数据库区间需要分别测量。

循环平均乘积保留数值,并不创造总时间

一个节点平均每循环2.5毫秒、执行4次,可以报告跨循环10毫秒。然而父节点可能已经包含这项工作,并行参与者也可能同时运行。将这10毫秒再与父节点或同层 Workers 相加会重复计算或误解重叠。

保留原始数值 token 使0.010与0.01的来源写法可核对;乘积按十进制字符串表达,报告不把精度问题隐藏在二进制浮点乘法里。

比较规则必须能被复核

对比仅按语句/子节点位置配对。同位置算子名变化标记 operator-changed;即使重排后同位置名称相同,也只报告 same-operator-at-position,不推断节点身份或优化成功。

完整 statement、未知扩展、Workers、JIT 与 triggers 留在交付件中,方便使用真实 PostgreSQL 工具继续分析。报告解释记录的口径,不替代服务端测量或接收应用验证。

明确来源与完整交付

主计划与可选对照计划各自选择粘贴或一个 JSON 文件;只有显式启用的角色和模式会读取。文件同名不会改变角色。显式版本仅支持 PostgreSQL 16。

主计划与对照的原始 UTF-8 字节合计不超过 1 MiB;单个文件名最多 512 UTF-8 字节,MIME 标签最多 128。容量与元数据在读取文件前核对;原始字节、角色、文件名、字节数及 SHA256 全部保留。

TEXT 计划需要在 PostgreSQL 16 另行导出 FORMAT JSON;本工具不执行 SQL、不连接数据库,也不能据此确认优化成功或解释全部客户端等待时间。历史问题的 2015 TEXT 测量只作为需求背景;界面样例使用已保存的受控 PostgreSQL 16.15 JSON 导出。

10 秒完整绝对期限从元数据、参数验证和文件读取之前开始,贯穿 Worker 加载、处理和发布。取消、超时或源变更清除旧报告、表格与下载;保留同一份完整源可重新运行。

完整报告、CSV、原始计划、版本封装及复制正文合计最多 16 MiB;大型序列化前预留容量,typed 报告/表格另限 16 MiB,物理与 typed 数据运输合计限 32 MiB,数字路径累计限 8 MiB。超限原子拒绝。

完整交付文件
文件用途
report.json全部计划树、数值词法、范围、对比和源证据
operators.csv每个算子及完整 sourceJSON;公式前缀安全引用
plan-1-source.json / plan-2-source.json主计划及启用对照的逐字节原件
envelope.json显式版本 16 包装;原始数组文本原样嵌入
Copy完整报告,预览截断不改变正文
  • 两个角色分别切换粘贴/文件,关闭对照会忽略残留对照输入。
  • 用完整原件复核每个树节点、Workers、JIT、触发器与扩展字段。
  • 取消或源变更后,旧结果及链接清除;用同一完整请求恢复。

参考资料

  • 原始需求与作者反馈

    已阅读原2015问题、回答和全部作者反馈。原始 TEXT 指标仅作明确人工转录示例,不冒称来源为PG16;另保留真实PG16.15只读 expression SELECT JSON 案例。

  • 官方实现与规范入口

    PostgreSQL 16 EXPLAIN 文档说明规划器 cost、循环平均实际指标与测量开销。

本分类工具使用说明

展开工具,查看操作步骤、可调选项和支持范围,再直接进入工作区。

PostgreSQL 16 JSON 计划检查读取一至两份 PostgreSQL 16 JSON 执行计划,保留原始树、Workers 与数值写法,解释循环和并行口径并按位置比较。

读取一至两份 PostgreSQL 16 JSON 执行计划,保留原始树、Workers 与数值写法,解释循环和并行口径并按位置比较。

操作步骤

  1. 确认原始导出来自 PostgreSQL 16,并保留 JSON 数组。
  2. 给主计划选择粘贴或文件;可选启用对照并独立选择来源。
  3. 阅读完整树、数值词法、循环与并行范围以及位置对比。
  4. 下载原始计划、版本封装、完整报告与 CSV;复制保留完整正文。

可调选项

服务器主版本
PostgreSQL 16
主计划来源
粘贴 · 文件
启用对照计划
默认关闭
对照计划来源
粘贴 · 文件

能力与限制

  • 主计划与对照的原始 UTF-8 字节合计不超过 1 MiB;单个文件名最多 512 UTF-8 字节,MIME 标签最多 128。容量与元数据在读取文件前核对;原始字节、角色、文件名、字节数及 SHA256 全部保留。
  • 每份计划 1–32 个 statement、最多 2048 个 operator,operator 深度最多 32,每份最多 256 个 Workers 记录。版本封装与全部源计划合计最多 100000 个 JSON 值节点,封装根深度为 0、最多 128;单个源数组根在封装深度 2。
  • 仅接收 EXPLAIN FORMAT JSON 数组,不解析文本计划、不执行 SQL。数值必须有限、非负、可无损表示;重复键、BOM、负零及不安全整数拒绝。
  • operator 节点的 Actual Startup Time、Actual Total Time、Actual Rows、Actual Loops 如出现,必须四者齐全;用于循环乘积的时间、行数与 loops 须用普通十进制写法,指数写法拒绝。Workers 的原始字段保留并检查已提供数值。TIMING OFF 等缺少实际时间的部分 Actual 记录当前拒绝。
  • cost 是规划器单位;Actual 时间和行数按循环平均。报告用精确十进制字符串乘 loops,时间包含子节点并可能有并行重叠,不求相加总时间;buffers 不乘 loops。
  • 两份计划只按相同 statement 和子节点位置比较,标记新增、删除和 operator 改变;不推断节点身份或优化成功。完整所有文件与复制文本合计最多 16 MiB。
  • 主计划与可选对照计划各自选择粘贴或一个 JSON 文件;只有显式启用的角色和模式会读取。文件同名不会改变角色。显式版本仅支持 PostgreSQL 16。
  • TEXT 计划需要在 PostgreSQL 16 另行导出 FORMAT JSON;本工具不执行 SQL、不连接数据库,也不能据此确认优化成功或解释全部客户端等待时间。历史问题的 2015 TEXT 测量只作为需求背景;界面样例使用已保存的受控 PostgreSQL 16.15 JSON 导出。
  • 10 秒完整绝对期限从元数据、参数验证和文件读取之前开始,贯穿 Worker 加载、处理和发布。取消、超时或源变更清除旧报告、表格与下载;保留同一份完整源可重新运行。
  • 完整报告、CSV、原始计划、版本封装及复制正文合计最多 16 MiB;大型序列化前预留容量,typed 报告/表格另限 16 MiB,物理与 typed 数据运输合计限 32 MiB,数字路径累计限 8 MiB。超限原子拒绝。
打开PostgreSQL 16 JSON 计划检查 →