暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 数据库——sysdistrib 系统目录表存储数据分发信息以供查询优化器使用

三金先生 2023-11-14
33

sysdistrib 系统目录表存储数据分发信息以供查询优化器使用。数据分发为优化器提供 了详细的表和列信息以改进 SELECT 语句的执行路径的选择。



当以方式 MEDIUM 或 HIGH 对某张表执行 UPDATE STATISTICS 语句时,会将信息存储 在 sysdistrib 表中。(UPDATE STATISTICS LOW 不会将值插入到 mode 列中。) 只有用户 gbasedbt 才能选择 encdat 列。

sysdistrib 系统目录表中的每一行都使用 tabid 和 colno 列(为它们收集统计信息) 作为键。 对于内置数据类型的列,将类型字段设置为 A。encdat 列存储用 ASCII 编码的直方 图,此直方图分为多行,每行包含 256 个字节。 在 GBase 8s 中,对于用户定义的数据类型的列,type 字段设置为 S。encdat 列以多 重表示格式存储由 statcollect 用户定义的例程收集的统计信息。对每个 tabid 和 colno 对 只存储一行。tabid、colno 和 seqno 列的组合索引只允许这些值的唯一组合。 以下三个 DML 计数器列会记录在生成列分发统计信息时对表执行修改数据行的 DML 操作 的计数:

nupdates 中的 UPDATE 操作数

ndeletes 中的 DELETE 操作数 和 ninserts 中的 INSERT 操作数 这些计数还可包括 MERGE 语句修改的行。 这些 DML 计数器列会存储在生成分发统计信息时存在的服务器分区中的计数器值。 如果 AUTO_STAT_MODE 配置参数、AUTO_STAT_MODE 会话环境设置或 UPDATE STATISTICS 语句的 AUTO 关键字已启用数据分发统计信息的选择性更新,那么 ninserts、ndeletes 和 ninserts 值可影响 UPDATE STATISTICS 操作是否刷新现有数据分发统计信息。当以 MEDIUM 或 HIGH 方式对表运行 UPDATE STATISTICS 语句时,数据库服务器会比较这些 列中的已存储值与分区中的当前值。如果已存储值之和不同于分区页面中的这些当前

sysdistrib DML 计数器值之和,少于 STATCHANGE 表属性或 STATCHANGE 配置参数的设 置所指定的阈值,那么不会更新表的列分发统计信息。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论