暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

重写PostgreSQL火焰图

alitrack 2021-04-02
527

pg_flame

Marcus Gartner 借鉴了火焰图的思想,使用Go语言开发了PostgreSQL Explain Analyze 火焰图。

李红艳,公众号:alitrackPostgreSQL火焰图

问题


鉴于这个软件使用比较麻烦,

  • 安装麻烦,不支持go get -u 这样简单的办法。

  • 需要psql或者别的Postgres客户端生成Explain json文件

  • 需要打开生成html

  • 需要联网访问所需的javascript和css


解决办法


重写后,做了如下改进,

  • 安装方便,支持 go  get -u github.com/alitrack/pg_flame 

  • 使用pgx来访问Postgres,不再需要第三方Postgres客户端

  • 所需javascript和css都借助zipdata来自动打包到了代码中。

  • 无外网都情况下也可以正常使用

  • 支持DATABASE_URL系统变量

  • 使用webview自动打开生成的html文件


安装

暂时未提供预编译版本,请从源码安装

    go  get -u github.com/alitrack/pg_flame
    复制


    用法


      usage: pg_flame [<flags>]


      A flamegraph generator for Postgres EXPLAIN ANALYZE output.


      Flags:
      --help Show context-sensitive help (also try --help-long and --help-man).
      -U, --username="steven" database user name
      -h, --host="localhost" database server host or socket directory
      -p, --port=5432 database server port
      --sslmode="disable" database server sslmode
      --password=PASSWORD database server password
      --dbname="postgres" database name
      -o, --output="pg_flame.html" output html file
      -c, --command=COMMAND run only single command (SQL)
      -f, --file=FILE execute commands from file
      -s, --show_browser Launch browser if successful
      --version Show application version.
      复制

      如果设置了DATABASE_URL 系统变量,

      命令行传入SQL,

        pg_flame -c  'EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON) SELECT id FROM users'
        复制

        或者使用SQL文件

          pg_flame -f query.sql
          复制

          假设你有一个query.sql文件有内容如下,

            -- query.sql
            EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON)
            SELECT id
            FROM users
            复制


            如果没有设置DATABASE_URL系统变量,可以根据帮助来指定数据库连接参数。



            参考,

            文章转载自alitrack,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论