Oracle禁止收集直方图信息(oracle不收集直方图)

Oracle禁止收集直方图信息

Oracle数据库管理系统广泛应用于企业级应用。Oracle一直致力于优化查询性能,因此,其数据库管理系统中集成了丰富的统计信息。其中,收集直方图信息是SQL查询优化过程中非常重要的一种技术。但是,最近Oracle官方宣布,从19c版本开始,将禁止用户通过DBMS_STATS包收集直方图信息。本文将会探讨这个决定的原因和影响。

为什么禁止收集直方图信息?

Oracle数据库管理系统在19c版本中取消DBMS_STATS包中提供的收集直方图信息功能。这一决定与Oracle对数据库性能优化技术的变革有关。

Oracle19c引入了自适应优化技术。自适应优化技术能够基于执行反馈和基于统计信息的数据分布估计来校正执行计划、开销估算、选择Join方式等操作,从而提高系统的自适应性能。

然而,自适应优化技术也带来了一些问题。自适应优化技术在进行优化时,要求系统对收集到的统计信息进行识别和评估。然而,直方图信息过于复杂,会大大降低系统实时响应性能。

归根结底,禁止收集直方图信息是Oracle持续优化数据库性能的一部分。此举可以改善系统的自适应性能,并为将来可能推出的优化技术打下基础。

对用户的影响

对于仍在使用早期版本的用户,收集直方图信息仍然是SQL查询优化过程中的非常重要的技术。

由于直方图信息能够描述数据的分布,因此,优化器可以使用直方图来选择更合适的执行计划。在实际应用中,直方图信息能够帮助优化器确定合适的索引、Join方式、排序操作等。因此,禁止收集直方图信息对一些Oracle用户将会产生影响。

不过,对于使用Oracle 19c及以上版本的用户来说,禁止收集直方图信息并不会对数据库应用的性能造成太大影响。因为Oracle 19c引入了自适应优化技术,该技术可以更有效的根据执行反馈和基于统计信息的数据分布对查询进行优化。

禁止收集直方图信息是否有替代方案?

对于使用Oracle 19c及以上版本的用户,DBMS_STATS包仍然提供了丰富的统计信息收集功能。

收集直方图信息在Oracle 19c及以上版本中已经被取消,但是,用户仍然可以使用另一种技术,即收集样本数目(count)和数据范围(histogram endpoint)来建立统计信息以估计数据分布。不过,这种技术不如直方图信息精细,因此可能会导致优化器选择不同于期望的执行计划。同时,用户仍可以通过手动收集直方图信息来解决这个问题。但是,如果没有必要收集直方图信息,则最好避免这样做。

总结

随着Oracle数据库优化技术的变革,收集直方图信息已经不再是SQL优化过程的重要技术。最近Oracle宣布禁止用户在19c版本及以后使用DBMS_STATS包收集直方图信息。虽然这项举措会对一些用户产生影响,但是在Oracle 19c及以后的版本中,用户仍然可以使用其他统计信息收集功能来优化查询性能。


数据运维技术 » Oracle禁止收集直方图信息(oracle不收集直方图)