pg_show_plans

打印所有当前正在运行查询的执行计划

概览

扩展包名版本分类许可证语言
pg_show_plans2.1.7STATPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
6210pg_show_plans-
相关扩展pg_store_plans explain_ui auto_explain pg_stat_statements pg_hint_plan pg_stat_monitor pg_qualstats pre_prepare

版本

类型仓库版本PG 大版本包名依赖
EXTPGDG2.1.71817161514pg_show_plans-
RPMPGDG2.1.61817161514pg_show_plans_$v-
DEBPGDG2.1.71817161514postgresql-$v-show-plans-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
d12.aarch64
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
d13.x86_64
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
d13.aarch64
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
u22.x86_64
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
u22.aarch64
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
u24.x86_64
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
u24.aarch64
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7

安装

您可以直接安装 pg_show_plans 扩展包的预置二进制包,首先确保 PGDG 仓库已经添加并启用:

pig repo add pgdg -u          # 添加 PGDG 仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install pg_show_plans;          # 当前活跃 PG 版本安装
pig ext install -y pg_show_plans -v 18  # PG 18
pig ext install -y pg_show_plans -v 17  # PG 17
pig ext install -y pg_show_plans -v 16  # PG 16
pig ext install -y pg_show_plans -v 15  # PG 15
pig ext install -y pg_show_plans -v 14  # PG 14
dnf install -y pg_show_plans_18       # PG 18
dnf install -y pg_show_plans_17       # PG 17
dnf install -y pg_show_plans_16       # PG 16
dnf install -y pg_show_plans_15       # PG 15
dnf install -y pg_show_plans_14       # PG 14
apt install -y postgresql-18-show-plans   # PG 18
apt install -y postgresql-17-show-plans   # PG 17
apt install -y postgresql-16-show-plans   # PG 16
apt install -y postgresql-15-show-plans   # PG 15
apt install -y postgresql-14-show-plans   # PG 14

预加载配置

shared_preload_libraries = 'pg_show_plans';

创建扩展

CREATE EXTENSION pg_show_plans;

用法

pg_show_plans: 显示正在运行的 SQL 语句的查询计划

pg_show_plans 实时显示所有正在运行的 SQL 语句的执行计划。计划存储在共享内存哈希表中。

查看运行中的计划

-- 查看所有正在运行的查询的计划
SELECT * FROM pg_show_plans;

-- 查看计划及其查询文本
SELECT * FROM pg_show_plans_q;

视图返回以下列:

列名类型描述
pidinteger服务器进程 ID
levelinteger查询嵌套层级(0 = 顶层)
useridoid用户 OID
dbidoid数据库 OID
plantext查询计划文本
querytext查询字符串(仅在 pg_show_plans_q 中)

嵌套查询

当函数调用 SQL 语句时,它们会出现在更深的嵌套层级中:

SELECT * FROM pg_show_plans;
  pid  | level | userid | dbid  |                       plan
-------+-------+--------+-------+-----------------------------------------------
 11504 |     0 |     10 | 16384 | Function Scan on print_item  (cost=...)
 11504 |     1 |     10 | 16384 | Result  (cost=0.00..0.01 rows=1 width=4)

GUC 参数

参数默认值描述
pg_show_plans.plan_formattext输出格式:textjsonyamlxml
pg_show_plans.max_plan_length16384最大计划长度(字节,影响共享内存)
pg_show_plans.is_enabledtrue在运行时启用或禁用扩展

最后修改 2026-03-14: update extension metadata (953cbd0)