统计信息:优化器需要根据表、索引中的数据来选择查询方式,由于表的数据量很大,不可能每次执行查询时都实时的统计表中的数据量以及数据分布,所以需要定期分析数据,把表和索引的数据分布情况保存到数据字典里,以便优化器使用。
统计信息主要包括:表、表分区、索引、索引分区、列、列的直方图,主要关注表、索引上的统计信息,重点是数据量和数据块。 analyze 进行更新统计信息
PG _ STATISTICS 系统表存储有关该数据库的表和索引列的统计数据。需要有系统管理员权限才可以访问。其他用户访问该视图需要被授权。
名称 类型 描述
starelid oid 所描述的字段所属的表或者索引
starelkind char 所属对象的类型
staattnum smallint 所描述的字段在表中的编号,从1开始
stainherit boolean 是否统计有继承关系的对象
stanulfrac real 该字段中为 NULL 的记录的比率
stawidth smallint 非 NULL 记录的平均存储宽度,以字节计
stadistinct real 标识局统计信息所有 DN 上字段里唯一的非 NULL 数据值的数目
stakindN smallint 一个编码,表示这种类型的统计存储在 pg _ statistic 行的第 n 个"槽位"
staopN oid 一个用于生成这些存储在第 n 个"槽位"的统计信息的操作符
PG STATS 视图提供对存储在 PG _ STATISTICS 表里面的单列统计信息的访问。
名称 类型 描述
schemaname name 包含表的模式名。
tablename name 表名。
attname name 字段的名称。
inherited Boolean 如果为真,则包含继承的子列,否则只是指定表的字段。
null _ frac real 记录中字段为空的百分比
avg _ width integer 学段记录以字节记的平均宽度
n _ distinct real 如果大于零,表示字段中独立数值的估计数目。如果小于零,表示独立数值的数目被行数除的负数。用负数形式是因为 ANALYZE 认为独立数值的数目是随着表增长而增长;正数的形式用于在字段看上去好像有固定的可能值数目的情况下。比如,-1表示一个唯一字段,独立数值的个数和行数相同。
n _ dndistinct real 标识dn1上字段中非 NULL 数据的唯一值的数目。如果大于零,表示独立数值的实际数目。如果小于零,表示独立数值的目被行数除的负数。(比如,一个字段的数值平均出现概率为两次,则可以表示为 n _ dndistinct =-0.5). 如果等于零,表示独立数值的数目未知
most _ common _ vals anyarray 一个字段里最常用数值的列表。如果里面的字段数值是最常见的,则为 NULL
most _ common _ freqs reall 一个最常用数值的频率的列表,也就是说,每个出现的次数除以行数。如果 most _ common _ vals 是 NULL ,则为 NULL