Oceanbase-Topk直方图

文章目录

计算公式:

(1 - (1 / bucket_size)) * 100

这个计算公式,用来确定在 Topk 直方图中,哪些值会被认为是"重要值",即超过特定的百分比阈值时会被记录在直方图中。它反映了每个桶(bucket)在直方图中的重要性。让我们具体解释一下如何理解这个公式。

公式的含义:

bucket_size:直方图的桶数(即最大不同值的数量),通常为254。这意味着直方图最多可以容纳254个不同的值(或频率最高的254个值)。

(1 - (1 / bucket_size)) * 100:这个计算表示单个桶在总体中的最低百分比权重。若某个值的频率低于这个百分比,就不会被记录在直方图中。

举例解释

场景设定

假设有一张包含 10,000 行数据的表,某列的数据分布如下:

出现次数
A 5000
B 2000
C 500
D 200
E 100
F 100
G 100
H 100
其他 1900

在这张表中,有几个数据的出现频率相对较高(比如 A 和 B),其余数据的出现频率较低。

使用 Topk 直方图

我们为这个列创建 Topk 直方图,并设置bucket_size = 254。此时,公式计算的最低百分比阈值为:

(1 - (1 / bucket_size)) * 100=(1-(1/254))*100=99.60%

这意味着在直方图中,只有出现频率超过总数据量的 0.4% 的值会被记录在直方图中。对于这张 10,000 行的数据表:

0.4% 的 10,000 行是 40 行。因此,只有出现次数超过 40 的值才会被记录在直方图中。

直方图记录情况

根据这个标准,我们来看看哪些值会被记录在直方图中:

出现次数 记录情况
A 5000 记录
B 2000 记录
C 500 记录
D 200 记录
E 100 记录
F 100 记录
G 100 记录
H 100 记录
其他 1900(每个值少于40次) 不记录

结果分析

A、B、C 等值因其出现频率超过了 0.4%,所以被记录在直方图中。

其他值(合计 1900 次,但每个值单独的出现次数都低于 40 次)不会被记录在直方图中,因为它们的出现频率低于 0.4%,被认为对优化查询不重要。

总结

这个最低百分比阈值的目的是确保直方图只记录出现频率较高的"重要"值,从而减少直方图的大小和复杂度,使查询优化器能够更高效地使用这些频率信息。

相关推荐
OceanBase数据库官方博客22 分钟前
客户案例|美的以OceanBase为基构建云中立数字化基座破局多云孤岛
数据库·oceanbase·分布式数据库
OceanBase数据库官方博客30 分钟前
基于分层协作多智能体的数据库参数调优——OceanBase 校企研究
数据库·oceanbase·分布式数据库
OceanBase数据库1 天前
滔搏基于OceanBase实现 15TB到0.9TB“无痛切换”与“系统瘦身”
oceanbase·分布式数据库
OceanBase数据库2 天前
基于分层协作多智能体的数据库参数调优——OceanBase 校企研究
oceanbase·分布式数据库
OceanBase数据库2 天前
美的以OceanBase为基构建云中立数字化基座破局多云孤岛
oceanbase·分布式数据库
OceanBase数据库4 天前
印尼头部私营征信机构基于OceanBase实现核心数据库现代化升级
oceanbase·分布式数据库
OceanBase数据库官方博客4 天前
深度解读 OceanBase 多模一体化能力
数据库·ai·oceanbase·分布式数据库
赵渝强老师8 天前
【赵渝强老师】国产金仓数据库的数据库对象
数据库·postgresql·oracle·oceanbase·国产数据库
OceanBase数据库官方博客9 天前
OceanBase 一体机实现极简运维 10:1数据压缩降成本
oceanbase·分布式数据库
Navicat中国9 天前
1月31日·上海 | Navicat 鼎力助阵 OceanBase 年度嘉年华
数据库·oceanbase·navicat