pg_stat_monitor

提供查询聚合统计、客户端信息、执行计划详细信息和直方图

概览

扩展包名版本分类许可证语言
pg_stat_monitor2.3.2STATBSD 3-ClauseC
ID扩展名BinLibLoadCreateTrustReloc模式
6230pg_stat_monitor-
相关扩展pg_show_plans pg_stat_kcache pg_stat_statements pg_qualstats pg_store_plans pgsentinel auto_explain logerrors

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY2.3.21817161514pg_stat_monitor-
RPMPIGSTY2.3.21817161514pg_stat_monitor_$v-
DEBPIGSTY2.3.21817161514postgresql-$v-pg-stat-monitor-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
PIGSTY 2.3.2
PIGSTY 2.3.2
PIGSTY 2.3.2
PIGSTY 2.3.2
PIGSTY 2.3.2
d12.aarch64
PIGSTY 2.3.2
PIGSTY 2.3.2
PIGSTY 2.3.2
PIGSTY 2.3.2
PIGSTY 2.3.2
d13.x86_64
PIGSTY 2.3.2
PIGSTY 2.3.2
PIGSTY 2.3.2
PIGSTY 2.3.2
PIGSTY 2.3.2
d13.aarch64
PIGSTY 2.3.2
PIGSTY 2.3.2
PIGSTY 2.3.2
PIGSTY 2.3.2
PIGSTY 2.3.2
u22.x86_64
PIGSTY 2.3.2
PIGSTY 2.3.2
PIGSTY 2.3.2
PIGSTY 2.3.2
PIGSTY 2.3.2
u22.aarch64
PIGSTY 2.3.2
PIGSTY 2.3.2
PIGSTY 2.3.2
PIGSTY 2.3.2
PIGSTY 2.3.2
u24.x86_64
PIGSTY 2.3.2
PIGSTY 2.3.2
PIGSTY 2.3.2
PIGSTY 2.3.2
PIGSTY 2.3.2
u24.aarch64
PIGSTY 2.3.2
PIGSTY 2.3.2
PIGSTY 2.3.2
PIGSTY 2.3.2
PIGSTY 2.3.2

构建

您可以使用 pig build 命令构建 pg_stat_monitor 扩展的 RPM / DEB 包:

pig build pkg pg_stat_monitor         # 构建 RPM / DEB 包

安装

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

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

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

pig install pg_stat_monitor;          # 当前活跃 PG 版本安装
pig ext install -y pg_stat_monitor -v 18  # PG 18
pig ext install -y pg_stat_monitor -v 17  # PG 17
pig ext install -y pg_stat_monitor -v 16  # PG 16
pig ext install -y pg_stat_monitor -v 15  # PG 15
pig ext install -y pg_stat_monitor -v 14  # PG 14
dnf install -y pg_stat_monitor_18       # PG 18
dnf install -y pg_stat_monitor_17       # PG 17
dnf install -y pg_stat_monitor_16       # PG 16
dnf install -y pg_stat_monitor_15       # PG 15
dnf install -y pg_stat_monitor_14       # PG 14
apt install -y postgresql-18-pg-stat-monitor   # PG 18
apt install -y postgresql-17-pg-stat-monitor   # PG 17
apt install -y postgresql-16-pg-stat-monitor   # PG 16
apt install -y postgresql-15-pg-stat-monitor   # PG 15
apt install -y postgresql-14-pg-stat-monitor   # PG 14

预加载配置

shared_preload_libraries = 'pg_stat_monitor';

创建扩展

CREATE EXTENSION pg_stat_monitor;

用法

pg_stat_monitor: PostgreSQL 查询性能监控工具

pg_stat_monitor 是 pg_stat_statements 的高级替代方案,它将统计信息聚合到可配置的时间桶中,提供查询来源信息、实际参数捕获和查询计划详情。

查询统计信息

-- 基本查询监控
SELECT application_name, userid::regrole AS user_name,
       datname AS database_name, substr(query, 0, 50) AS query,
       calls, client_ip
FROM pg_stat_monitor;

-- 基于时间桶的分析
SELECT bucket, bucket_start_time, query, calls,
       mean_exec_time, total_exec_time
FROM pg_stat_monitor
ORDER BY total_exec_time DESC;

-- 显示查询计划
SELECT query, query_plan FROM pg_stat_monitor
WHERE query_plan IS NOT NULL;

主要特性

  • 时间桶:统计信息按可配置的时间间隔分组,提供更精确的分析
  • 客户端 IP 追踪:每个查询记录发起的客户端 IP 地址
  • 实际参数:可选捕获真实查询参数值而非占位符
  • 查询计划:每个查询附带其实际执行计划
  • 热点查询追踪:识别每个时间桶中最耗资源的查询
  • 直方图支持:通过直方图函数提供时间分布可视化

函数

-- 重置所有统计信息
SELECT pg_stat_monitor_reset();

-- 查看内部信息
SELECT * FROM pg_stat_monitor_info;

配置

关键参数(在 postgresql.conf 中设置):

参数描述
pg_stat_monitor.pgsm_max最大追踪语句数
pg_stat_monitor.pgsm_query_max_len最大查询长度
pg_stat_monitor.pgsm_bucket_time时间桶持续时间(秒)
pg_stat_monitor.pgsm_max_buckets最大时间桶数量
pg_stat_monitor.pgsm_enable_query_plan启用查询计划捕获
pg_stat_monitor.pgsm_track追踪级别:topallnone

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