sys_statistics(数据库内容的统计数据)¶
sys_statistics存储该数据库内容的统计数据。记录是 create statistics 创建的,并且随后被查询规划器使用。请注意所有统计信息本质上都是近似的数值,即使我们假设它是最新的也如此。
因为不同类型的统计信息适用于不同类型的数据,sys_statistics被设计成不太在意自己存储的是什么类型的统计。只有极为常用的统计信息(比如 NULL)才在sys_statistics里给予专用的字段。其它所有东西都存储在"槽位"中,而槽位是一组相关的字段,它们的内容用槽位中的一个字段的代码号码表示。sys_statistics不应该是公众可读的,因为即使是表内容的统计信息也应该认为是敏感的。(例子:薪水字段的最大最小值肯定是相当让人感兴趣的。)v_sys_statistics是一个在sys_statistics上的全局可读的视图,它只显示那些表对于当前用户可读的信息。v_sys_statistics也设计成具有比其所依靠的下层 sys_statistics表更具可读性的信息,代价是增加新的槽位类型的时候,它的大纲必须扩展。
| 列名 | 类型 | 描述 |
|---|---|---|
| STANAME | NAME | 统计名称 |
| STANULLFRAC | DOUBLE PRECISION | 该字段中为 NULL 的记录的分数 |
| STADISTINCT | DOUBLE PRECISION | 字段里唯一的非 NULL 数据值的数目。一个大于零的数值是独立数值的实际数目。一个小于零的数值是表中行数的分数的负数(比如,一个字段的数值平均出现概率为两次,那么可以表示为 stadistince = -0.5)。零值表示独立数值的数目未知 |
| STARELID | OID | 所描述的字段所属的表 |
| STAWIDTH | INT | 非 NULL 记录的平均存储宽度,以字节计 |
| ATTMODCTR | INT | 这个域被借用来记录扩展直方图的桶数 |
| STATOUCHCNT | INT | 改统计是否被访问过,0或1 |
| STALASTANALYZE | BIGINT | 最近分析时间 |
| STAOP1 | OID | 一个用于生成这些存储在第1个"槽位"的统计信息的操作符。比如,一个柱面图槽位会显示"<"操作符,该操作符定义了该数据的排序顺序 |
| STAOP2 | OID | 一个用于生成这些存储在第2个"槽位"的统计信息的操作符。比如,一个柱面图槽位会显示"<"操作符,该操作符定义了该数据的排序顺序 |
| STAOP3 | OID | 一个用于生成这些存储在第3个"槽位"的统计信息的操作符。比如,一个柱面图槽位会显示"<"操作符,该操作符定义了该数据的排序顺序 |
| STAOP4 | OID | 一个用于生成这些存储在第4个"槽位"的统计信息的操作符。比如,一个柱面图槽位会显示"<"操作符,该操作符定义了该数据的排序顺序 |
| STAATTNUM | SMALLINT | 所描述的字段的个数 |
| STAKIND1 | SMALLINT | 一个编码,表示这种类型的统计存储在sys_statistic行的第1个"槽位" |
| STAKIND2 | SMALLINT | 一个编码,表示这种类型的统计存储在sys_statistic行的第2个"槽位" |
| STAKIND3 | SMALLINT | 一个编码,表示这种类型的统计存储在sys_statistic行的第3个"槽位" |
| STAKIND4 | SMALLINT | 一个编码,表示这种类型的统计存储在sys_statistic行的第4个"槽位" |
| HAVEINDEX | SMALLINT | 统计是否基于索引 |
| SAMPLEWAY | SMALLINT | 统计采样方法 |
| SAMPLEVALUE | INT | 采样行数 |
| AUTOUPDATE | SMALLINT | 是否自动更新改统计 |
| STAVALUES1 | TEXT[] | 第1个"槽位"相关类型的字段数据值,如果该槽位类型不存储任何数据值那么就是NULL。为了做到数据类型无关,所有字段数据值都转换成外部文本形式,然后当做TEXT数据存储 |
| STAVALUES2 | TEXT[] | 第2个"槽位"相关类型的字段数据值,如果该槽位类型不存储任何数据值那么就是NULL。为了做到数据类型无关,所有字段数据值都转换成外部文本形式,然后当做TEXT数据存储 |
| STAVALUES3 | TEXT[] | 第3个"槽位"相关类型的字段数据值,如果该槽位类型不存储任何数据值那么就是NULL。为了做到数据类型无关,所有字段数据值都转换成外部文本形式,然后当做TEXT数据存储 |
| STAVALUES4 | TEXT[] | 第4个"槽位"相关类型的字段数据值,如果该槽位类型不存储任何数据值那么就是NULL。为了做到数据类型无关,所有字段数据值都转换成外部文本形式,然后当做TEXT数据存储 |
| STANUMBERS1 | DOUBLE PRECISION[] | 第1个"槽位"的相关类型的数值类型统计,如果该槽位和数值类型没系,那么就是NULL |
| STANUMBERS2 | DOUBLE PRECISION[] | 第2个"槽位"的相关类型的数值类型统计,如果该槽位和数值类型没系,那么就是NULL |
| STANUMBERS3 | DOUBLE PRECISION[] | 第3个"槽位"的相关类型的数值类型统计,如果该槽位和数值类型没系,那么就是NULL |
| STANUMBERS4 | DOUBLE PRECISION[] | 第4个"槽位"的相关类型的数值类型统计,如果该槽位和数值类型没系,那么就是NULL |