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数据库官方博客12 天前
蚂蚁集团 CTO 何征宇:AGI时代,海量数据带来的质变|OceanBase 开发者大会实录
人工智能·oceanbase·分布式数据库·开发者大会
数据最前线14 天前
OceanBase 开发者大会,拥抱 Data*AI 战略,构建 AI 数据底座
人工智能·oceanbase
久绊A16 天前
OceanBase 共享存储:云原生数据库的存储
数据库·云原生·oceanbase
OceanBase数据库官方博客19 天前
如何分析动态采样引起的计划不稳定 | OceanBase SQL 调优实践
sql·oceanbase·分布式数据库
OceanBase数据库官方博客19 天前
OceanBase 开发者大会:详解 Data × AI 战略,数据库一体化架构再升级
ai·oceanbase·分布式数据库·开发者大会
OceanBase数据库官方博客23 天前
OAT 初始化时出错?问题可能出在 PAM 配置上|OceanBase 故障排查实践
oceanbase·分布式数据库·故障排查
GottdesKrieges1 个月前
OceanBase性能关键参数配置最佳实践
linux·oceanbase
wei_shuo1 个月前
高性能数据库架构探索:OceanBase 分布式技术深入解析
分布式·oceanbase·数据库架构
GottdesKrieges1 个月前
OceanBase租户扩缩容的三种方法
数据库·oceanbase
枫叶20001 个月前
OceanBase数据库-学习笔记4-租户
数据库·笔记·学习·oceanbase