pg_qualstats
收集有关 quals 的统计信息的扩展
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_qualstats | 2.1.3 | STAT | BSD 3-Clause | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 6240 | pg_qualstats | 否 | 是 | 是 | 是 | 否 | 否 | - |
| 相关扩展 | hypopg pg_stat_kcache powa pg_stat_statements index_advisor pre_prepare pg_show_plans pg_stat_monitor |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PGDG | 2.1.3 | 1817161514 | pg_qualstats | - |
| RPM | PGDG | 2.1.2 | 1817161514 | pg_qualstats_$v | - |
| DEB | PGDG | 2.1.3 | 1817161514 | postgresql-$v-pg-qualstats | - |
安装
您可以直接安装 pg_qualstats 扩展包的预置二进制包,首先确保 PGDG 仓库已经添加并启用:
pig repo add pgdg -u # 添加 PGDG 仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install pg_qualstats; # 当前活跃 PG 版本安装
pig ext install -y pg_qualstats -v 18 # PG 18
pig ext install -y pg_qualstats -v 17 # PG 17
pig ext install -y pg_qualstats -v 16 # PG 16
pig ext install -y pg_qualstats -v 15 # PG 15
pig ext install -y pg_qualstats -v 14 # PG 14
dnf install -y pg_qualstats_18 # PG 18
dnf install -y pg_qualstats_17 # PG 17
dnf install -y pg_qualstats_16 # PG 16
dnf install -y pg_qualstats_15 # PG 15
dnf install -y pg_qualstats_14 # PG 14
apt install -y postgresql-18-pg-qualstats # PG 18
apt install -y postgresql-17-pg-qualstats # PG 17
apt install -y postgresql-16-pg-qualstats # PG 16
apt install -y postgresql-15-pg-qualstats # PG 15
apt install -y postgresql-14-pg-qualstats # PG 14
预加载配置:
shared_preload_libraries = 'pg_qualstats';
创建扩展:
CREATE EXTENSION pg_qualstats;
用法
pg_qualstats 收集 WHERE 子句和 JOIN 条件中谓词的统计信息。它追踪哪些列被最频繁查询以及哪些列被一起查询,从而支持索引建议。
查看谓词统计
-- 当前数据库的原始谓词统计
SELECT * FROM pg_qualstats;
-- 人类可读的聚合形式
SELECT * FROM pg_qualstats_pretty;
-- 按属性聚合的统计
SELECT * FROM pg_qualstats_all;
-- 按查询聚合的谓词
SELECT * FROM pg_qualstats_by_query;
索引顾问
基于收集的谓词统计生成索引建议:
-- 建议索引(过滤行数 >1000 且选择率 >30% 的谓词)
SELECT v FROM json_array_elements(
pg_qualstats_index_advisor(min_filter => 50)->'indexes') v;
-- 显示无法优化的谓词
SELECT v FROM json_array_elements(
pg_qualstats_index_advisor(min_filter => 50)->'unoptimised') v;
实用函数
-- 获取 queryid 对应的存储查询文本
SELECT pg_qualstats_example_query(queryid);
-- 获取所有存储的查询文本
SELECT * FROM pg_qualstats_example_queries();
-- 重置所有统计信息
SELECT pg_qualstats_reset();
配置
| 参数 | 默认值 | 描述 |
|---|---|---|
pg_qualstats.enabled | true | 启用/禁用收集 |
pg_qualstats.track_constants | true | 追踪各个常量值 |
pg_qualstats.max | 1000 | 最大追踪谓词数和查询文本数 |
pg_qualstats.resolve_oids | false | 在查询时解析 OID(占用更多空间) |
pg_qualstats.track_pg_catalog | false | 追踪 pg_catalog 对象上的谓词 |
pg_qualstats.sample_rate | -1 | 查询采样比例(-1 = 自动:1/max_connections) |