跳转至

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): 是否解析oid
  • pg_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聚集