签到成功

知道了

CNDBA社区CNDBA社区

Oracle 19c 自适应计划(adaptive plans) 特性说明(建议关闭)

2024-01-15 20:29 1365 0 原创 Oracle 19c
作者: dave

1 Adaptive Query Plans 特性说明

adaptive plans 是 Oracle 12c 中引入的新特性,官网对该特性的说明如下:

https://docs.oracle.com/database/121/TGSQL/tgsql_optcncpt.htm#TGSQL94982
https://docs.oracle.com/database/121/TGSQL/tgsql_influence.htm#TGSQL257http://www.cndba.cn/dave/article/131499

MOS 的文章:http://www.cndba.cn/dave/article/131499

Adaptive Execution Plans (Doc ID 1409636.1)
Adaptive Query Optimization (Doc ID 2031605.1)
Oracle Database 12c 版本1的自适应特性的建议 (Adaptive Features, Adaptive Statistics 以及 12c SQL 性能) (Doc ID 2297986.1)

The ability of the optimizer to adapt a plan, based on information learned during execution, can greatly improve query performance.http://www.cndba.cn/dave/article/131499

Adaptive plans are useful because the optimizer occasionally picks a suboptimal default plan because of a cardinality misestimate. The ability to adapt the plan at run time based on actual execution statistics results in a more optimal final plan. After choosing the final plan, the optimizer uses it for subsequent executions, thus ensuring that the suboptimal plan is not reused.

http://www.cndba.cn/dave/article/131499
http://www.cndba.cn/dave/article/131499

自适应特性,是指优化器基于之前执行结果的相关信息,在下次相关 SQL 的执行阶段调整执行计划和重新生成执行计划的一组功能。它能够使SQL在第一次运行时根据运行时统计信息动态改变最终的执行计划,用于避免SQL语句在第一次执行时由于差的执行计划引起灾难性的性能问题。http://www.cndba.cn/dave/article/131499http://www.cndba.cn/dave/article/131499

执行计划自适应分为两个组件:

  1. 自适应执行计划 - 允许优化器在 SQL 执行阶段改变执行计划。
  2. 自适应统计信息 - 允许优化器基于之前执行结果的信息,重新生成执行计划。这些信息有些是固化到数据字典中的,例如:SQL Plan Directives 或者自动生成的扩展统计信息。

在 12.1 版本里,两个组件被同一个参数 optimizer_adaptive_features控制,默认值是 TRUE.
在 12.2 中参数 optimizer_adaptive_features 被废弃,自适应特性被两个参数控制, optimizer_adaptive_plans 和 optimizer_adaptive_statistics。

  1. 参数 optimizer_adaptive_plans 控制是否启用自适应执行计划特性,即允许优化器在 SQL 执行时动态调整执行计划,默认值是 TRUE。
  2. 参数optimizer_adaptive_statistics 控制是否启用自适应统计信息功能,该参数默认是FALSE。自动扩展统计信息是被表级的属性 AUTO_STAT_EXTENSIONS控制的,默认是 OFF. (AUTO_STAT_EXTENSIONS 可以使用 DBMS_STATS 的 SET_TABLE_PREFS 以及 SET_GLOBAL_PREFS来设置。)

2 关闭特性

自适应特性的出发点是好的,但同其他新特性一样,当前在 19c 版本中 Oracle 并没有完全调教好,开启自适应的执行计划可能会导致执行计划的不稳定。

所以在 19c 中建议关闭该特性,通过optimizer_adaptive_plans 参数控制, http://www.cndba.cn/dave/article/131499

OPTIMIZER_ADAPTIVE_PLANS:
Control adaptive plans.
By default, this parameter is true, which means that adaptive plans are enabled.
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/refrn/OPTIMIZER_ADAPTIVE_PLANS.htmlhttp://www.cndba.cn/dave/article/131499

操作示例:

http://www.cndba.cn/dave/article/131499

SQL> show parameter 'optimizer_adaptive_plans';

NAME                                 TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
optimizer_adaptive_plans             boolean
TRUE

SQL> alter system set optimizer_adaptive_plans=false scope=both;

System altered.

SQL> show parameter 'optimizer_adaptive_plans';

NAME                                 TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
optimizer_adaptive_plans             boolean
FALSE
SQL>

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2256
    原创
  • 3
    翻译
  • 577
    转载
  • 191
    评论
  • 访问:7725500次
  • 积分:4330
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ