[hidecontent type="logged" desc="隐藏内容:登录后可查看"]
您可以使用以下命令通过 Homebrew 安装:
$ brew install mgartner/tap/pg_flame
在发布选项卡中下载一个已编译的二进制文件。下载后, pg_flame
进入您的$PATH
.
或者,如果您想使用 Docker 构建程序,也可以。
$ docker pull mgartner/pg_flame
如果您想从源代码构建二进制文件,请运行以下命令。请注意,编译需要 Go 版本 1.13+。
$ git clone https://github.com/mgartner/pg_flame.git
$ cd pg_flame
$ go build
pg_flame
将创建一个二进制文件,您可以将其放入您的$PATH
.
该pg_flame
程序从标准输入读取 JSON 查询计划并将火焰图 HTML 写入标准输出。因此,您可以根据需要通过管道和直接输入和输出。
$ psql dbname -qAtc 'EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON) SELECT id FROM users' \
| pg_flame \
> flamegraph.html \
&& open flamegraph.html
使用查询创建一个 SQL 文件EXPLAIN ANALYZE
。
-- query.sql
EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON)
SELECT id
FROM users
然后运行查询并将 JSON 保存到文件中。
$ psql dbname -qAtf query.sql > plan.json
最后,生成火焰图 HTML。
$ cat plan.json | pg_flame > flamegraph.html
如果您已按照上述 Docker 安装步骤进行操作,则可以将查询计划 JSON 通过管道传输到容器并保存输出 HTML。
$ psql dbname -qAtc 'EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON) SELECT id FROM users' \
| docker run -i pg_flame \
> flamegraph.html
Flamegraphs由 Brendan Gregg 发明,用于可视化分析软件的每个代码路径的 CPU 消耗。它们是许多类型的性能调查中有用的可视化工具。Flamegraphs 已被用于可视化 Oracle 数据库 查询计划 和查询执行 ,证明对调试缓慢的数据库查询很有用。
Pg_flame 是对 Postgres 查询计划的扩展。它生成查询计划的视觉层次结构。此可视化标识查询计划每个部分的相对时间。
该工具依赖于 spiermar/d3-flame-graph
插件来生成火焰图。
[/hidecontent]