从 Oracle Database 12c Release 1 (12.1)开始,如果动态统计信息被打开的话,那么优化器会自动的去决定:
-
是否动态统计信息是有用的
-
哪个采样级别被使用
在 12c 上自动动态统计信息默认是启用的,OPTIMIZER_DYNAMIC_SAMPLING 默认值为2。当满足下面任一条件时自动动态统计信息将有效:
-
初始化参数 OPTIMIZER_DYNAMIC_SAMPLING 设置为默认值
或者
OPTIMIZER_DYNAMIC_SAMPLING 设置成11(如:默认值和11以外的值将关闭 ADS)
-
使用 SQL hint 启用动态统计信息
-
查询启用了并行
-
查询之前执行过,并且它的历史信息存在(来自 cursor cache, Automatic Workload Repository,或者 SQL Management Base)
在使用 Adaptive Query Optimization 技术时(如:Adaptive Plans,Statistics Feedback, SQL Plan directives 等等),优化器会基于算法决定是否使用动态统计信息。
在使用 Adaptive Query Optimization 时,触发 Automatic Dynamic Sampling
在下面的条件下使用 Adaptive Query Optimization 将触发自动动态采样:
-
当优化器发现 cardinality estimate 不准确时,ADS 将被触发(不管 SQL 语句是否是被重复执行的)
-
SQL 语句使用到了 adaptive plans 时,ADS 也会被触发
-
SQL 语句用到了自动重新优化(作为 adaptive statistics 一部分),ADS 也会被触发
阅读(951) | 评论(0) | 转发(0) |