适用版本
OceanBase 数据库 V4.2.1 及以上版本。
问题现象
业务表按天新建分区同时也会删除分区,每天新导入数据后查当前的数据。由于新增的分区统计信息缺失(每日的自动统计信息收集时间没到,导入大量的数据)导致计划走偏。导致 cpu 100% 被用满,手动使用高级包 dbms_stats.copy_table_stats 复制统计信息到新分区并未恢复复制统计信息到新分区并未恢复,整张表重新收集完成统计信息才恢复。
问题原因
业务中的表有二级分区表,一级分区按天 range 分区,二级按照 hash 分区,每天会给新建的分区导入数据后查当前的数据,同时也会删除旧的分区,由于新分区的统计信息缺失可能导致计划走偏导致的 CPU 用满,发生故障时候手动用 PL 包 dbms_stats.copy_table_stats 复制统计信息到新分区并未恢复,是因为拷贝了一级分区的统计信息,二级分区的统计信息并没有拷贝所以现场并未恢复,整张表重新收集完成统计信息才恢复。
影响的租户
影响 OceanBase 数据库 的 Oracle 租户,对 SYS 租户、MySQL 租户无影响。
解决方法
收集全表级的统计信息并固定计划,不收集分区级别的统计信息。