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

达梦数据库统计信息详解

原创 始于脚下 2021-06-17
2151

达梦数据库查询优化器采用基于代价的计算方法。在优化器估算查询代价时,也是以统计信息或者普遍的数据分布为主要依据的,这跟Oracle数据库基于成本的优化器原理是类似的。所以,统计信息在达梦数据库优化中,是至关重要的。例如统计信息缺失,或统计信息陈旧,或抽样数据不能很好地反映数据分布时,优化器选择的执行计划不是“最优” 的,甚至可能是很差的执行计划,就会引起严重的数据库性能问题,甚至导致数据库服务器夯死。

达梦数据库的对象统计信息分三种类型:表统计信息、列统计信息、索引统计信息。通过直方图来表示。统计信息生成过程分以下三个步骤:

1. 确定采样的数据:根据数据对象,确定需要分析哪些数据。

1) 表:计算表的行数、所占的页数目、平均记录长度

2) 列:统计列数据的分布情况

3) 索引:统计索引列的数据分布情况

2. 确定采样率

根据数据对象的大小,通过内部算法,确定数据的采样率。采样率与数据量成反比。

3. 生成直方图

有两种类型的直方图:频率直方图和等高直方图。根据算法分析表的数据分布特征,确定直方图的类型。频率直方图的每个桶(保存统计信息的对象)的高度不同,等高直方图每个桶的高度相同。例如,对列生成统计信息,当列值分布比较均匀时,会采用等高直方图,否则,采用频率直方图。

在执行查询时,如果数据对象存在统计信息,代价算法可以根据统计信息中的数据,比较精确地计算出操作所需花费的成本,以此来确定连接方式、对象访问路径、连接顺序,选择最优的执行计划。

用户也可以通过修改OPTIMIZER_DYNAMIC_SAMPLING参数值在缺乏统计信息时进行动态统计信息收集。

OPTIMIZER_DYNAMIC_SAMPLING当统计信息不可用时是否启用动态统计信息。取值范围:0~12。0:不启用;1~10:启用,采用率10%~100%;11:启用,由优化器确定采样率(0.1%~99.9%);12:同11,但收集的结果会持久化保存。

以下是部分常用的统计信息字典视图及作用。

SYSSTATS:记录系统中的统计信息。

SYSMSTATS:记录多维统计信息的内容。

SYSSTATPREFS:记录指定模式下表的统计信息的静态参数对应的值。

SYSSTATTABLEIDU:记录所有表在上一次收集统计信息时的总行数和之后对表增删改的影响行数以及是否有过 TRUNCATE 操作。

V$SYSSTAT:显示系统统计信息。

V$RLOG_PKG_STAT:显示当前实例日志系统中日志包使用的统计信息。

V$SESSION_SYS:显示系统中会话的一些状态统计信息。

V$SESSION_STAT:记录每个 session 上的相关统计信息。

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

评论