推选一篇爱可生开源社区文章,本文约 600 字,预计阅读需要 3 分钟。
正文如下:
OceanBase V3 版本中保存统计信息的系统表比较混乱,主要原因是 V3 版本合并收集的统计信息和手工收集的统计信息有区别,需要存在不同的系统表中。到了 V4 版本,每日合并不再收集统计信息,保存统计信息的系统表得到了统一。
本文主要目的是厘清 V3 版本查询统计信息的最佳方式,同时介绍一下 V4 版本相比 V3 版本统计信息的主要改变:
每日合并不再收集统计信息; Oracle 和 MySQL 租户都可以使用 DBMS_STATS 系统包收集统计信息,与 analyze 相比参数更多,使用更灵活,更推荐使用 DBMS_STATS 系统包来收集统计信息; 通过 JOB 每天定时收集统计信息(数据修改比例超过 10% 的表/分区才会收集,会收集存在数据倾斜列的直方图)。
1V3 版本的统计信息
为了更好的说明 V3 版本统计信息的特点,本文先从 V3 版本的角度来总结 sys 租户、MySQL 租户、Oracle 租户中系统表的作用。先说结论:
不建议在 sys 租户下查看统计信息,只能查看合并收集的统计信息,无法查看手工收集的统计信息; MySQL租户建议通过 __all_table_stat_v2
、__all_column_stat_v2
、__all_histogram_stat_v2
查看手工收集的统计信息;Oracle 租户通过 ALL_TAB_STATISTICS
、ALL_TAB_COL_STATISTICS
、ALL_TAB_HISTOGRAMS
查看手工收集的统计信息。
sys 租户下统计信息的相关表:

MySQL 租户下统计信息的相关表:

Oracle 租户下统计信息的相关表比较简单,和原生 Oracle 保持一致:

2V4 版本的统计信息
在 V4 版本中,统计信息的保存基本得到统一,同样建议在业务租户下查看收集的统计信息。
表级统计信息:

列级统计信息:

直方图统计信息:

文章转载自戏说数据那点事,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




