统计信息更新

统计信息更新 #

OceanBase 数据库中表的统计信息过期判断标准为:如果当前表增量的 DML 次数(上一次收集统计信息时 DML 次数到本次收集统计信息期间发生的增/删/改总次数)超过设置的阈值时就会过期。阈值的默认值是 10%。

手动收集统计信息 #

语法如下:

analyze_stmt:
ANALYZE TABLE table_name UPDATE HISTOGRAM ON column_name_list WITH INTNUM BUCKETS

示例:收集表 tbl1 的统计信息,列的桶个数为 30 个。

ANALYZE TABLE tbl1 UPDATE HISTOGRAM ON a, b, c, d WITH 30 BUCKETS;

OceanBase 数据库 MySQL 模式下用于查询相关统计信息的视图如下表所示:

视图名称描述
OCEANBASE.DBA_TAB_STATISTICS用于查询表级的统计信息。
OCEANBASE.DBA_TAB_COL_STATISTICS用于查询 GLOBAL 级别的列级统计信息。
OCEANBASE.DBA_PART_COL_STATISTICS用于查询 PARTITON 级别的列级统计信息。
OCEANBASE.DBA_SUBPART_COL_STATISTICS用于查询 SUBPARTITON 级别的列级统计信息。
OCEANBASE.DBA_TAB_HISTOGRAMS用于查询 GLOBAL 级别的列级直方图统计信息。
OCEANBASE.DBA_PART_HISTOGRAMS用于查询 PARTITON 级别的列级直方图统计信息。
OCEANBASE.DBA_SUBPART_HISTOGRAMS用于查询 SUBPARTITON 级别的列级直方图统计信息。
OCEANBASE.DBA_IND_STATISTICS用于查询索引统计信息。