【问题标题】:Parsing output of EXPLAIN command in PostgreSQL在 PostgreSQL 中解析 EXPLAIN 命令的输出
【发布时间】:2011-12-26 07:28:30
【问题描述】:

我正在开发一个需要解析执行计划(通过发出 EXPLAIN [query] 命令作为输出生成的)的应用程序。您知道我可以为此目的使用的任何 Java 库吗?我找到了https://github.com/depesz/Pg--Explain,但它是用 Perl 构建的。

我正在考虑的另一个选项是使用 PostgreSQL 9.1 中提供的 EXPLAIN [query] FORMAT XML。但是,在这种情况下,最好让生成的计划的 XML Schema 可用。

还有其他我不知道的解决方案吗?

【问题讨论】:

  • Hugo Depesz 构建的东西非常棒。我怀疑你会发现很多其他东西,当然没有更好的了。你不能把他的模块称为网络服务吗?
  • 请注意,XML 输出是在 9.0 中添加的,而不是 9.1
  • FWIW 还支持 JSON 和 YAML 格式的输出。
  • @C.Ramseyer Hubert "Depesz" Lubaczewski

标签: parsing postgresql sql-execution-plan


【解决方案1】:

你已经得到了正确的答案。对于您的自动化需求,请使用 XML 或以下工具: https://github.com/depesz/Pg--Explain

对于我们其他人来说,交互式版本是一个真正的宝石,我将其发布在这里,以便人们找到它: http://explain.depesz.com/

解释本身的背景是: http://www.postgresql.org/docs/current/static/sql-explain.html 但似乎没有对 DTD 或已定义模式的引用进行解释。

【讨论】:

    【解决方案2】:

    我对解释解释命令的 XML 计划输出有同样的要求。我使用了 LibXML2 库。它易于使用且功能强大。试试看。

    【讨论】:

      【解决方案3】:

      我也有类似需求,通过psqljq解决,例如:

      psql $PG_URL -P pager=off -Aqt -c 'EXPLAIN (FORMAT JSON) SELECT version()' | jq
      

      您还可以通过管道连接到您熟悉的其他编程语言,例如:

      psql $PG_URL -P pager=off -Aqt -c 'EXPLAIN (FORMAT JSON) SELECT version()' |
        ruby -rjson -e 'pp JSON.parse($stdin.read)'
      

      参考文献

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-25
        • 1970-01-01
        • 2014-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-30
        相关资源
        最近更新 更多