pg_statistic #
目录 pg_statistic 存储关于数据库内容的
统计数据。条目由 ANALYZE
创建,随后由查询规划器使用。注意,所有统计数据本质上都是近似的,
即使假定它们是最新的。
通常,每个被分析过的表列有一个
stainherit =
false 的条目。
如果该表有继承子表或分区,则还会创建一个
stainherit = true
的第二个条目。该行表示该列在整个继承树上的统计信息,
即 SELECT
所看到的数据的统计信息,
而 column FROM table*stainherit = false
的行表示
SELECT
的结果。
column FROM ONLY table
pg_statistic 还存储关于索引表达式值的
统计数据。它们的描述就好像它们是实际的数据列一样;
特别地,starelid 引用该索引。
不过,普通的非表达式索引列不会创建条目,
因为那会与底层表列的条目冗余。目前,
索引表达式的条目总是
stainherit = false。
由于不同种类的数据可能适合不同种类的统计信息,
pg_statistic 的设计不对其存储的统计信息类型
做太多假设。只有极其通用的统计信息(例如空值性)
才会在 pg_statistic 中拥有专门的列。
其他一切都存储在“槽”中,
槽是一组相关联的列,其内容由槽中某一列的代码号标识。
更多信息见
src/include/catalog/pg_statistic.h。
pg_statistic 不应被公众读取,
因为即便是关于表内容的统计信息也可能被视为敏感信息。
(例如:薪金列的最小值和最大值可能相当引人关注。)
pg_stats
是 pg_statistic 上一个公开可读的视图,
它只暴露当前用户可读的那些表的信息。
Table 52.51. \1 字段列说明
Column Type Description |
|---|
所描述的列所属的表或索引 |
被描述列的编号 |
如果为真,统计信息包括来自子表的值,而不只是指定关系中的值 |
列条目中空值所占的比例 |
非空条目的平均存储宽度(以字节为单位) |
该列中不同的非空数据值的个数。
大于零的值是不同值的实际数目。
小于零的值是表中行数乘数的相反数;例如,
一列中约 80% 的值非空,且每个非空值平均大约出现两次,
则可以表示为 |
一个代码号,指示存储在
|
用于推导存储在第 |
用于推导存储在第 |
第 |
第 |