关键字:
优化器、统计信息、系统表、人大金仓、KingbaseES、
一、摘要
本文介绍了KingbaseES数据库统计信息系统表SYS_STATISTIC。
KingbaseES数据库统计信息系统表
目录sys_statistic存储有关数据库内容的统计数据。其中的项由ANALYZE创建,查询规划器会使用这些数据来进行查询规划。注意所有的统计数据天然就是近似的,即使它刚刚被更新。
sys_statistic也存储关于索引表达式值的统计数据,但在这种情况中starelid为索引的oid。对一个普通非表达式索引列不会创建项,因为它将是底层表列的项的冗余。
不同类型的统计信息适用于不同类型的数据,sys_statistic被设计成不太在意自己存储的是什么类型的统计。只有极为常用的统计信息(比如NULL的比例)在sys_statistic中设置专用的字段。其它的统计信息存储在SLOT中。
表的描述如下图所示。
图sys_statistic系统表
表中列的具体描述如下表所示。
Column | Type | 描述 |
starelid | oid | 对应表的oid |
staattnum | smallint | 对应列的编号 |
stainherit | boolean | 是否为继承表 |
stanullfrac | real | NULL值比率,即该列中NULL值所占的比率 |
stawidth | integer | 该列的平均宽度,以字节计算 |
stadistinct | real | 表示该列消除重复后的数据的个数或者所占比率, 它有三种类型的取值: 1)= 0:表示未知或者未计算 2)> 0:表示去重后的个数 3)< 0:它的绝对值表示去重之后的个数占总个数的比率 |
stakind[i] | smallint | 统计信息的类型值 |
staop[i] | oid | 统计信息中涉及的操作符的oid |
stacoll[i] | oid | 对于可排序的列的统计信息的排序编码的oid |
stanumbers[i] | real[] | 存的是MCV最频值的频率值数组, 或者相关系数值 |
stavaluesN | anyarray | 存的是MCV最频值的字面值数组, 跟MCV频率值一一对应, 或者存的是直方图的桶的值的数组 |