oracle优化器参数

来源:这里教程网 时间:2026-03-03 11:44:19 作者:
优化器参数optimizer_mode的值可以分为以下几种,RULE,CHOOSE,FIRST_ROWS_n(n=1,10,100,1000),first_rows,all_rows
1,rule
SQL> show parameter optimizer_mode

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
optimizer_mode                 string     RULE
表示oracle将使用RBO来解析目标SQL,此时目标SQL中涉及的各个对象的统计信息对于RBO来说,没有任何作用。
2.choose
SQL> show parameter optimizer_mode

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
optimizer_mode                 string     CHOOSE
取决于目标SQL中是否有统计值,如果没有就不会使用RBO,如果有就会使用CBO。
3,first_rows_n(n=1,10,100,1000)
SQL> show parameter optimizer_mode

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
optimizer_mode                 string     FIRST_ROWS_10
当first_rows_n中有任意一个值时,oracle会使用CBO来解析目标SQL,此时CBO在计算该SQL的各条执行路径的成本值时的侧重点在以最快的响应速度返回n(n=1,10,100,1000)条记录,当满足first_rows_n(n=1,10,100,1000)时,oracle会把所有对应的执行步骤的成本值改成一个很小的值(小于默认情况下CBO对同样执行步骤的所计算的成本值)这样oracle就没有违背CBO选取执行计划的原则(成本值最小)。
4,first_rows
SQL> show parameter optimizer_mode

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
optimizer_mode                 string     FIRST_ROWS
表示oracle在解析SQL时会联合使用CBO和RBO,这里大多数情况下还是会使用CBO。
5,all_rows
SQL> show parameter optimizer_mode

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
optimizer_mode                 string     ALL_ROWS
oracle 10g后续版本的默认值,CBO在计算SQL的各条执行路径的成本值时,侧重最佳吞吐量(最少I/O和CPU资源的消耗量)




相关推荐