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

Oracle 19C 端点重复计数如何工作

原创 Asher.HU 2021-02-04
543


混合直方图都基于高度的直方图和频率直方图的联合特性。这种“两全其美”的方法使优化器在某些情况下可以获得更好的选择性估计。

基于高度的直方图有时会得出几乎不受欢迎的值的不准确估计值例如,一个值仅作为一个存储桶的端点值出现,但几乎占据了两个存储桶的值被认为不受欢迎。

为了解决此问题,混合直方图会分配值,以使任何值都不会占用一个以上的存储桶,然后针对直方图中的每个端点(存储桶)存储端点重复计数值,该值是端点值被重复的次数。通过使用重复计数,优化器可以获得对几乎流行的值的准确估计。


11.8.1端点重复计数如何工作

桶中分布的硬币的类比说明了端点重复计数的工作。

下图说明了coins将值从低到高排序列。

图11-5硬币

您可以收集此表的统计信息,并将的method_opt参数设置DBMS_STATS.GATHER_TABLE_STATSFOR ALL COLUMNS SIZE 3在这种情况下,优化器最初coins会将列中的值分为三个存储区,如下图所示。

图11-6值的初始分布

如果存储桶边界拆分了一个值,以使该值的某些出现在一个存储桶中,而另一些存储在另一个存储桶中,则优化器会将存储桶边界(以及所有其他后续存储桶边界)向前移动以包括该值的所有出现。例如,优化器对值进行移位5,以使其现在完全位于第一个存储桶中,而值25现在完全位于第二个存储桶中。

图11-7值的重新分配

端点重复计数可衡量相应存储段端点(即右侧存储区边界处的值)重复自身的次数例如,在第一个存储桶中,该值5重复3次,因此端点重复计数为3

图11-8端点重复计数

高度平衡的直方图存储的信息不如混合直方图。通过使用重复计数,优化器可以准确确定存在多少个端点值。

例如,优化器知道该值5出现3次,该值25出现4次,并且该值100出现2次。该频率信息有助于优化器生成更好的基数估计。

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

评论