调试数据库慢查询时,我们最常用的工具之一就是 EXPLAIN ANALYZE
。它可以告诉你查询是怎么一步步执行的,每一步用了多长时间,处理了多少数据。
不过问题也来了:这些信息虽然有用,但并不一定好懂。
于是,我们在 GreptimeDB Dashboard 上线了全新的 EXPLAIN ANALYZE 可视化功能,希望用户可以一眼看懂、轻松分析执行计划的图形化结果。
为什么 EXPLAIN ANALYZE
很重要
当你遇到查询变慢的时候,EXPLAIN ANALYZE
是最直接、也最有用的工具之一。
它会告诉你:
- 数据库怎么执行这条 SQL(计划);
- 实际执行过程中每一步用了多长时间(真实耗时);
- 每个步骤的输出数据量、内存使用、I/O 等等。
在 PostgreSQL 社区,很多优秀的工具都是基于 EXPLAIN 打造的,比如:
这些工具给了我们很多灵感,促进了 GreptimeDB Dashboard 里 EXPLAIN
可视化功能的诞生。
GreptimeDB 中的 EXPLAIN ANALYZE
在 GreptimeDB 中,执行计划的传统输出格式和 PostgreSQL 很像,是一棵“缩进树”:
SortPreservingMergeExec: [ts@0 DESC] metrics=[]
WindowedSortExec: expr=ts@0 DESC num_ranges=1 fetch=100 metrics=[output_rows: 8, elapsed_compute: 1]
PartSortExec: expr=ts@0 DESC num_ranges=1 limit=100 metrics=[output_rows: 16, elapsed_compute: 2530502, row_replacements: 8]
UnorderedScan: region=4402341478400(1025, 0)... metrics=[output_rows: 8, mem_used: 1152, elapsed_await: 18584876, elapsed_poll: 19227585]
每一行表示执行计划中的一步操作,缩进表示它是某个步骤的子节点。每个节点有执行器类型(比如 SortPreservingMergeExec
),一些参数,还有执行过程中统计的数据(如耗时、输出行数和内存使用情况等)。这种格式对于能够熟练使用的用户来说很高效,但当计划增加和深入,或想在不同节点之间对比耗时时,手动分析就有点费劲了。
因此 GreptimeDB 新增了对 EXPLAIN ANALYZE FORMAT JSON
的支持,并基于结构化的结果做了一整套图形化、可视化的方案。
一键可视化:Dashboard 帮你读懂 EXPLAIN ANALYZE
现在用户只需要在 Dashboard 里写好查询,点击 Explain Query #1
,等待查询执行完就能看到一个清晰可视化的执行计划。不需要用户再靠眼力分析 JSON
,Dashboard 会直接画出来,能够极大地节省用户的时间和精力。
目前我们提供三种视图:
📊 表格视图(Table View)
这个视图会把整个执行计划拆成两个阶段(Stage),每个阶段以树的形式展开。 每个节点都会显示关键指标,比如:
- 执行耗时(
elapsed_compute
); - 输出行数(
output_rows
); - 其他和 GreptimeDB 引擎有关的指标。
我们用不同颜色的横向指示条表示耗时对比,这样用户一眼就能看出“最耗资源”的那一步,还可以进一步展开来查看全部指标:

🕸️ 图形视图(Chart View)
图形视图会把执行计划画成树,结构层级一目了然。同时支持左右切换查看不同的节点。
下面展示了一个包含 11 个节点的查询示例:

🧾 原始 JSON 视图(Raw JSON
View)
如果你更喜欢直接查看数据,可以切换到原始的 JSON
视图,也可以下载后进行分析或分享:

🔄 支持导入已有的 JSON
结果
如果你手上已经有一份 EXPLAIN ANALYZE FORMAT JSON
的结果,也可以直接导入到 Dashboard 内查看。
只要使用 Import Result JSON
功能,就能马上切换到 GreptimeDB 提供的三种视图进行分析。这对于调试线上慢查询、协作分析非常方便:

最后总结一下
这项可视化功能,是我们在支持 EXPLAIN ANALYZE
基础上的进一步增强。它让查询执行计划更直观、更易读,也更适合用户进行协作调试和性能分析。
功能现已上线 Dashboard,欢迎体验!
更多 PR 相关:👉 dashboard#506
关于 Greptime
Greptime 格睿科技专注于打造新一代可观测数据库,服务开发者与企业用户,覆盖从从边缘设备到云端企业级部署的多样化需求。
- GreptimeDB 开源版:开源、云原生,统一处理指标、日志和追踪数据,适合中小规模 IoT,个人项目与可观测性场景;
- GreptimeDB 企业版:面向关键业务,提供更高性能、高安全性、高可用性和智能化运维服务;
- GreptimeCloud 云服务:全托管云服务,零运维体验“企业级”可观测数据库,弹性扩展,按需付费。
欢迎加入开源社区参与贡献与交流!推荐从带有 good first issue
标签的任务入手,一起共建可观测未来。
⭐ Star us on GitHub | 📚 官网 | 📖 文档