贝利信息

SQL数据库自适应执行计划_计划缓存失效分析

日期:2026-01-09 00:00 / 作者:冰川箭仙
自适应执行计划是Oracle 12c动态调整执行路径的机制,依赖缓存中的可变框架;当统计信息更新、对象结构变更、优化器参数变动或ACS元数据丢失时,会导致计划缓存失效,丧失自适应能力。

什么是自适应执行计划与计划缓存失效

自适应执行计划(Adaptive Execution Plans)是Oracle 12c引入的优化机制,允许SQL在执行过程中根据运行时统计信息动态调整执行路径(比如从嵌套循环切到哈希连接)。它依赖于计划缓存中已编译的“可变框架”,而非完全重新硬解析。但当底层对象结构、统计信息或优化器环境发生显著变化时,原有自适应计划可能被标记为“失效”,导致下次执行时触发软解析甚至硬解析,从而丢失自适应能力,甚至回归次优计划。

常见导致自适应计划缓存失效的场景

以下变更会直接使已缓存的自适应计划不可复用:

如何识别自适应计划是否实际生效或已失效

不能只看 V$SQL.IS_ADAPTIVE 为YES就认为正在自适应——它仅表示该SQL曾生成过自适应计划。关键要看实时执行行为:

稳定自适应计划缓存的实用建议

在OLTP或混合负载中平衡性能与稳定性: