使用 Drill 查询获取 PostgreSQL 执行计划

Posted

技术标签:

【中文标题】使用 Drill 查询获取 PostgreSQL 执行计划【英文标题】:Get PostgreSQL execution plan with Drill query 【发布时间】:2017-11-29 21:21:24 【问题描述】:

我需要获取使用 PostgreSQL 存储插件从 Apache Drill 执行的查询的执行计划(不是 Drill 执行计划,而是 PostGIS 执行计划)。

所以我使用以下命令启用解释计划日志;

SET auto_explain.log_min_duration = 0;
SET auto_explain.log_analyze = true;

如果我从 pgAdmin 执行查询,它会显示语句和计划。但如果我从 Drill 执行相同的查询,它不会记录任何内容。

您知道为什么会发生这种情况以及如何解决这种情况吗?

注意:我检查了连接,没有问题,它们在pgAdmin和Drill中是一样的,在Drill中我执行查询并得到结果,所以我假设没有连接问题。

【问题讨论】:

你安装了auto_explain extension吗? 是的,已启用 【参考方案1】:

我怀疑您正在从 postgres 命令行执行 SET 命令,因此这些设置仅适用于 Drill 的 postgres 会话。为了将这些设置应用到 Drill 的 postgres 会话,尝试将这些属性添加到 Drill 的存储插件配置中。以下是这些属性的示例配置:


  "type": "jdbc",
  "driver": "org.postgresql.Driver",
  "url": "jdbc:postgresql://localhost:5432;auto_explain.log_min_duration=0;auto_explain.log_analyze=true",
  "username": "postgres",
  "enabled": true

【讨论】:

以上是关于使用 Drill 查询获取 PostgreSQL 执行计划的主要内容,如果未能解决你的问题,请参考以下文章

Apache Drill 查询 HBase 表

从 JetBrains JDBC 驱动程序执行 Drill 查询时引用错误

使用 Apache Drill 查询嵌套的复杂 json 结构

Apache Drill 与 mongodb。在地图中查询具有特定键和值的文档

drill 集成开源s3 存储minio

Drill 学习笔记之 入门体验