41.36. pg_stats

视图 pg_stats 提供对存储在 pg_statistic 表里面的信息的访问。这个视图允许我们只访问那些在 pg_statistic 里面对应用户有权限读取的表的数据行,因此我们可以安全地允许公众访问这个视图。

pg_stats 也设计成把信息以一种更易读的方式出现的形式, 它比下层的系统表更容易阅读 — 代价就是如果在 pg_statistic 里定义了新的数据槽位,那么我们必须扩展它的视图定义。

Table 41-36. pg_stats 字段

名字类型引用描述
schemanamenamepg_namespace.nspname包含此表的模式名字
tablenamenamepg_class.relname表的名字
attnamenamepg_attribute.attname这一行描述的字段的名字
null_fracreal 记录中字段为空的百分比
avg_widthinteger 字段记录以字节记的平均宽度
n_distinctreal  如果大于零,就是在字段中独立数值的估计数目。如果小于零,就是独立数值的数目被行数除的负数。 (用负数形式是因为 ANALYZE 认为独立数值的数目是随着表增长而增长; 正数的形式用于在字段看上去好像有固定的可能值数目的情况下。)比如,-1 表示一个唯一字段,独立数值的个数和行数相同
most_common_valsanyarray  一个字段里最常用数值的列表。(如果看上去没有啥数值比其它更常见,则为 NULL。)
most_common_freqsreal[]  一个最常用数值的频率的列表,也就是说,每个出现的次数除以行数。 (如果 most_common_vals 是 NULL,则为 NULL)
histogram_boundsanyarray  一个数值的列表,它把字段的数值分成几组大致相同热门的组。如果在 most_common_vals 里有数值,则在这个饼图的计算中省略。 (如果字段数据类型没有 < 操作符或者 most_common_vals 列表代表了整个分布性,则这个字段为 NULL。)
correlationreal  统计与字段值的物理行序和逻辑行序有关。它的范围从 -1 到 +1。 在数值接近 -1 或者 +1 的时候,在字段上的索引扫描将被认为比它接近零的时候开销更少,因为减少了对磁盘的随机访问。 (如果字段数据类型没有 < 操作符,那么这个字段为 NULL。)

most_common_valshistogram_bounds 数组里的元素的最大数目可以用 ALTER TABLE SET STATISTICS 命令一个一个字段地设置, 或者通过设置运行时环境变量default_statistics_target 全局地设置。