sysfragdist 系统目录表会存储分段表和索引的分段级别列统计信息。对于每个表分段或索引分段,都存在一行。
此处仅描述分段表中的列。(对于表级别列统计信息,请参阅 sysdistrib 系统目录表。)
sysfragdist 表具有以下列。
列 | 类型 | 解释 |
---|---|---|
tabid | INTEGER | 表的唯一标识代码 ( = systables.tabid) |
fragid | INTEGER | 分段的唯一标识代码 ( = sysfragments.partnum) |
colno | SMALLINT | 列的唯一标识代码 ( = syscolumns.colno) |
seqno | SMALLINT | 序号(用于跨多行的分发) |
mode | CHAR(1) | UPDATE STATISTICS 方式(H = 高,或 M = 中) |
resolution | SMALLFLOAT | 每个二进制文件中样本的平均百分比 |
confidence | SMALLFLOAT | MEDIUM 方式样本值相当于确切 HIGH 方式结果的估算可能性 |
rowssampled | FLOAT | 样本中的行数 |
ustbuildduration | INTERVAL HOUR TO FRACTION(5) | 计算此列分发所花费的时间 |
constr_time | DATETIME YEAR TO FRACTION(5) | 记录分发的时间 |
ustnrows | FLOAT | 计算分发时分段中的行。 |
minibinsize | FLOAT | 仅供内部使用 |
nupdates | FLOAT | 表的更新数 |
ndeletes | FLOAT | 表的删除数 |
ninserts | FLOAT | 表的插入数 |
encdist | BLOB | 加密分段分发 |
sbsnum | INTEGER | 存储 encdist 的智能大对象空间的唯一标识代码 |
version | INTEGER | 保留供将来使用 |
具有给定 tabid、fragid 和 colno 值组合的行集用于标识该表分段的列统计信息。通过将 seqno 列用于排序号,这些统计信息可跨多行。
在计算分段列统计信息的 UPDATE STATISTICS MEDIUM 或 HIGH 语句中指定的 mode、resolution 和 confidence 值会记录在相同名称的 sysfragdist 列中。要使用现有分段统计信息来构建表统计信息,这三个参数在引用相同表的分段的 UPDATE STATISTICS 语句之间不应该更改。唯一例外是“H”方式分段统计信息可用于构建“M”方式表统计信息。
分段的列分发统计信息存储在 BLOB 列 encdist 中。sbsnum 列存储了描述此分段的 encdist 对象所存储在的智能 blob 空间的标识代码。缺省情况下,SBSPACENAME 配置参数设置是标识代码在 sbsnum 列中的智能大对象空间的标识。
以下三列会记录生成列分发统计信息时对分段执行修改数据行的 DML 操作的计数:
这些计数还可包括 MERGE 语句修改的行。
这些 DML 计数器列会存储在生成分发统计信息时存在的服务器分区中的计数器值。当以 MEDIUM 或 HIGH 方式对具有分段级别统计信息的分段表运行 UPDATE STATISTICS 时,数据库服务器会比较这些列中的已存储值与分区中的当前值。
如果 AUTO_STAT_MODE 配置参数、AUTO_STAT_MODE 会话环境设置或 UPDATE STATISTICS 语句的 AUTO 关键字已启用数据分发统计信息的选择性更新,那么 ninserts、ndeletes 和 ninserts 值可影响 UPDATE STATISTICS 操作是否刷新分段的现有数据分发统计信息。如果已存储值之和不同于分区页面的这些当前 DML 计数器值之和,少于 STATCHANGE 表属性或 STATCHANGE 配置参数的设置所指定的阈值,那么与 sysfragdist 表中行对应的分段列统计信息不会更新。