更新时间:2025-12-16 GMT+08:00
使用集群增强版时,在计算min,max,sum,count等结果时会偶现结果不一致
集群增强版为了提升min,max,sum,count等算子的性能,采用了数据预聚合的方式,提前计算并存储文件块级别的统计值。在执行查询时直接返回这些预计算值,无需读取底层数据,从而大幅提升查询性能。然而,当业务中存在对相同时间线的数据进行更新的场景(即多次更新未经过文件合并),块级别的统计值可能会出现偏差。
该问题仅在更新相同时间线数据时偶发发生(前提是这些更新操作的数据尚未完成合并)。若您的业务使用的是具备预聚合能力的集群增强版实例(非集群版不会出现此类问题),并且具备以下两个条件:
- 存在对相同时间线的频繁更新。
- 需要对 min、max、sum、count等统计值进行严格准确性的计算。
建议在相关SQL语句前加入提示 /*+ Exact_Statistic_Query */,例如:
select /*+ Exact_Statistic_Query */ count(*) from mst where XXXX
该参数会让系统去统计真实数据的值,数据一定准确,但是查询的耗时会增加。