oracle 自适应执行计划

   自适应执行计划

对象统计信息并不总是会为查询优化器提供用于找出最优执行计划所需的全部信息。为了改进这种情况,在解析阶段,查询优化器可以利用动态采样对要处理的数据获取额外的洞察力。

此外,自从12.1版本开始,查询优化器能够将某些决定推迟到执行阶段。其思路是,利用在执行计划的执行部分可以收集的信息来决定应该如何执行其他部分。基于这个目的,查询优化器引入了所谓的子计划。同时引入的还有负责决定应该激活哪个子计划的操作。

注意 自适应执行计划只有在企业版中才可用。

从12.1版本开始,查询优化器能在以下状况中使用自适应执行计划。

Ø  从嵌套循环联接切换到散列联接,反之亦然。

Ø  为并行执行的SQL语句从散列向广播切换分配方法。

下面的例子演示切换联接方法是如何实现的。这是一段来自adaptive_plan.sql脚本生成输出的摘录。此查询是一个两张表之间的简单联接。它通过普通的嵌套循环联接执行:

EXPLAIN PLAN FOR SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.n = 666;