关于如何获取表的直方图

我查到可以通过 DBA_TAB_HISTOGRAMS来获取表的直方图信息,但是具体该如何使用没有找到诶

直方图一般来说是给OB内部优化器用的,具体的字段可以参考:OceanBase分布式数据库-海量数据 笔笔算数

补充知识点:
直方图是一种特殊的列统计信息。默认情况下,优化器会认为列的数据是分布均匀的,会根据这一特征来进行行数估计,但是在真实的场景中,大多数表的数据分布都是不均匀的,这就会导致优化器错误的估计行数而选择不到最优的执行计划,这种场景下就需要有直方图。直方图通过将数据保存到一系列有序的桶中来描述其列的整体数据分布特征,优化器可以依据直方图来估算出更准确的行数。其中直方图每一个桶中包含了如下的信息:
● 当前桶累积的数据量(包含当前桶及其之前的桶的总和);
● 当前桶结束的value值;
● 当前桶结束的value值的出现频次;
目前 OceanBase 优化器支持三种类型的直方图:频率直方图、TopK直方图和混合直方图。优化器在收集统计信息的时候会根据列数据的真实分布情况来选择合适的直方图类型

直方图介绍:OceanBase分布式数据库-海量数据 笔笔算数

具体怎么操作啊,有例子吗

直方图是优化器自动采用的,可以避免数据分布不均导致执行计划偏离的情况,请问手动使用直方图的需求是什么?

想获取数据库内的直方图数据该怎么操作

oceanbase这个库下面有关键字histogram相关的表

好的谢谢,但是如果是另外一个数据库呢,我自己建了一个tpch的库,刚刚查了一下好像没有相关的表

所有表的直方图都是存放在oceanbase库的histogram相关表中,你可以用owner和table_name来筛选就好了,比如select * from oceanbase.dba_tab_histograms where owner = ‘tpch’ and table_name = ‘lineitem’;

好的谢谢您

image
可以看到这个tpch里面是有表的啊,但是为什么搜索的时候是空的?

需要收集统计信息的时候收集带直方图的才行

不太理解,这是啥意思

https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000822133
SQL>call dbms_stats.gather_table_stats(‘tpch’,‘lineitem’,degree=>8,method_opt=>‘for all columns size 254’);