SQL索引建议
SQL索引建议¶
SQL索引建议功能以动态库扩展形式实现,用户需在seaboxsql.conf中配置加载pg_qualstats
扩展
shared_preload_libraries = 'pg_qualstats'
配置¶
可配置以下GUC参数:
-
pg_qualstats.enabled
(boolean, 默认 true): 是否开启pg_qualstats
-
pg_qualstats.track_constants
(bolean, 默认 true): 是否单独追踪每个常量 pg_qualstats.max
(defaults to 1000): 最大追踪个数pg_qualstats.resolve_oids
(boolean, 默认 false): 是否解析oidpg_qualstats.track_pg_catalog
(boolean, 默认 false): 是否追踪系统表pg_qualstats.sample_rate
(double, 默认 -1): 采样率
用法¶
- 在数据库中创建扩展:
CREATE EXTENSION pg_qualstats;
功能¶
-
扩展中定义了以下功能:
-
pg_qualstats: 记录约束条件统计值
- userid: 执行查询的用户oid
- dbid: 执行查询所在的数据库oid
- lrelid, lattnum: 左值的表oid和列号
- opno: 与数条件中操作符的oid
- rrelid, rattnum: 右值的表oid和列号
- qualid: 约束条件id,排除常量
- uniquequalid: 约束条件id,包括常量
- qualnodeid: 谓词id,排除常量
- uniquequalnodeid: 谓词id,包括常量
- occurences: 调用次数
- execution_count: 执行次数
- nbfiltered: 谓词过滤的tuple数
- constant_position: 常量位置
- queryid: 如果安装了
pg_stats_statements
,表示查询id - constvalue: 常量值
- eval_type: 执行类型 'f' 表示扫描,'i' 表示索引扫描
-
pg_qualstats_index_advisor(min_filter, min_selectivity, forbidden_am):给出索引建议。默认只有谓词过滤条件达到至少1000行和30%时才会被考虑
视图¶
功能:
- pg_qualstats: 当前数据库的pg_qualstats()
- pg_qualstats_pretty: pg_qualstats的美化形式
- pg_qualstats_all: 按条件聚集,不考虑位置
- pg_qualstats_by_query: 按查询id聚集