前言
使用过Oracle的SQL Monitor的朋友都知道,它能够将复杂的SQL执行计划解析为直观的HTML可视化报告。清晰展示查询的执行路径、耗时分布及资源消耗,帮助开发者快速定位性能瓶颈,如表扫描、索引缺失、JOIN效率等问题。对于诊断慢SQL,该工具提供分析支持,大幅提升数据库调优效率。那对于PostgreSQL数据库,有没有类似的工具可以用来分析呢?答案是肯定的,那就是Depesz EXPLAIN ANALYZE visualizer,我们看一下它的使用方法。
在线访问方式
可以直接访问:https://explain.depesz.com/
本地搭建方式
当然除了在线访问,你可以本地部署,以下是本地部署步骤。
安装Docker环境
(此处略过Docker安装步骤)
克隆项目源码
git clone https://gitlab.com/depesz/explain.depesz.com.git
拉起镜像
进入项目docker目录并启动容器:
cd docker/
docker-compose up --build
若出现镜像拉取超时:
# docker-compose up --build
WARN[0000] /home/share/explain.depesz.com-master/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
[+] Running 1/1
✘ db Error Get "https://registry-1.docker.io/v2/": dial tcp 31.13.82.33:443: i/o timeout 55.4s
解决方案:更换Docker镜像源
编辑配置文件:
cat /etc/docker/daemon.json
内容如下:
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.imgdb.de",
"https://docker-0.unsee.tech",
"https://docker.hlmirror.com"
],
"insecure-registries": [
"http://docker.mirrors.ustc.edu.cn"
]
}
重启Docker服务:
systemctl daemon-reload && systemctl restart docker
验证部署
查看运行中的容器:
docker ps
正常输出示例:
CONTAINER ID IMAGE PORTS NAMES
5f6cb71bf56e docker-web 0.0.0.0:3000->3000/tcp docker-web-1
1e6b1dab0634 postgres 5432/tcp docker-db-1
若服务卡住,可尝试:
docker-compose start
访问服务
成功启动后访问:
http://[你的服务器IP]:3000
使用方法
使用方法简单:第一个标题随便输入,第二个空栏贴上您的执行计划,接着点提交,即可基于当前的执行计划生成一份HTML的报告。
用红色背景高亮显示,是我们的重点观察对象。
最后的stats列是SQL的总览信息
更多的功能自己去体验吧。
如果你觉得这篇文章有帮助,欢迎点赞收藏🌟,有任何问题也可以在评论区留言讨论~

