↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2
历史版本PostgreSQL 7.2 已于 2007 年 2 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

3.19. pg_statistic #

pg_statistic 存储关于数据库内容的统计数据。项由 ANALYZE 创建,随后被查询规划器使用。每个已分析的表列各有一项。注意,即使统计信息是最新的,所有统计数据本质上也是近似的。

由于不同种类的数据可能适合不同种类的统计信息,pg_statistic 的设计不对它存储的统计种类做太多假设。只有极其通用的统计(如 NULL 率)在 pg_statistic 中有专门的字段。其余所有内容都存储在“槽位”中,槽位是相关联的字段组,其内容由槽位各字段之一中的代码编号标识。更多信息见 src/include/catalog/pg_statistic.h。

pg_statistic 不应对公众可读,因为即使是关于表内容的统计信息也可能被视为敏感。(例如:工资列的最小值和最大值可能相当引人关注。)pg_stats 是 pg_statistic 上一个对公众可读的视图,它只公开当前用户可读的那些表的相关信息。pg_stats 的设计还在于以比底层 pg_statistic 表更易读的形式呈现信息。

表 3.19. pg_statistic 列

名称 类型 引用 描述
starelid oid pg_class.oid 所描述列所属的表
staattnum int2 pg_attribute.attnum 被描述列的编号
stanullfrac float4   该列各项中为 NULL 的比例
stawidth int4   非 NULL 项的平均存储宽度(字节)
stadistinct float4   列中不同非 NULL 数据值的数目。大于零的值是不同值的实际数目。小于零的值是表中行数的一个分数的相反数(例如,值平均出现约两次的列可以用 stadistinct = -0.5 表示)。零表示不同值的数目未知。
stakindN int2   一个代码,它表示存储在该pg_statistic行中第 N 个“槽位”的统计类型。
staopN oid pg_operator.oid 一个用于生成这些存储在第 N 个“槽位”的统计信息的操作符。 例如,直方图槽位会使用<操作符,该操作符定义了这些数据的排序顺序。
stanumbersN float4[]   第 N 个“槽位”的相应种类的数值统计;如果该槽位种类不涉及数值则为 NULL。
stavaluesN text[]   第 N 个“槽位”的相应种类的列数据值;如果该槽位种类不存储任何数据值则为 NULL。为做到与数据类型无关,所有列数据值都被转换为外部文本形式并作为 TEXT 存储项存储。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。