首批通过分布式安全可靠测评,为关键业务系统打造
统计信息概述
更新时间:2026-04-10 12:01:00
在 OceanBase 数据库优化器中,统计信息以普通数据的形式存储在内部表中,并且会在本地维护一个的统计信息缓存,以提高优化器对统计信息的访问速度。OceanBase 数据库 V4.0 之前版本的统计信息收集是在每日合并过程中完成,但是由于每日合并是增量合并,会导致统计信息并不是一直准确的,同时每日合并没法收集直方图信息,无法解决数据存在倾斜的场景。因此,OceanBase 数据库 V4.0 版本开始实行了全新的统计信息,同时将统计信息收集和每日合并解耦,每日合并过程不再收集统计信息,执行计划也不再会受到每日合并的影响。
统计信息的类型
在 OceanBase 数据库优化器中,统计信息主要分为四大类:表统计信息、列统计信息、索引统计信息和物化视图刷新统计信息。下表列出了常见的统计信息类型。
| 统计信息分类 | 基本统计信息类型 |
|---|---|
| 表统计信息 |
|
| 列统计信息 |
|
| 索引统计信息 |
|
| 物化视图刷新统计信息 |
|
直方图和直方图的作用
直方图是一种特殊的列统计信息。默认情况下,优化器会认为列的数据是分布均匀的,会根据这一特征来进行行数估计,但是在真实的场景中,大多数表的数据分布都是不均匀的,这就会导致优化器错误的估计行数而选择不到最优的执行计划,这种场景下就需要有直方图。直方图通过将数据保存到一系列有序的桶中来描述其列的整体数据分布特征,优化器可以依据直方图来估算出更准确的行数。其中直方图每一个桶中包含了如下的信息:
当前桶累积的数据量(包含当前桶及其之前的桶的总和)。
当前桶结束的 value 值。
当前桶结束的 value 值的出现频次。
目前 OceanBase 数据库优化器支持三种类型的直方图:频率直方图、TopK 直方图和混合直方图。优化器在收集统计信息的时候会根据列数据的真实分布情况来选择合适的直方图类型,具体策略如下图:

图中:
- NDV:一个列上不同 value 值的个数。
- bucket_size:指定的直方图桶个数,默认为 254。
- p:Topk 直方图期望的最低百分比阈值,计算公式:
(1–(1/bucket_size)) * 100,如果使用默认值 254,则对应的最低百分比阈值为 99.6。