优化器基础知识

2014-11-24 03:31:14 · 作者: · 浏览: 5

一,优化器的模式

在ORACLE数据库中,优化器的模式是由参数optimizer_mode的值来决定的,optimizer_mode的值可能是RULE,CHOOSE,FIRST_ROWS_n(n=1,10,100,1000),FIRST_ROWS或ALL_ROWS。 OPTIMIZER_MODE的各个可能值的含义如下:

1,RULE

表示ORACLE将使用RBO来解析目标SQL,此时目标SQL中所涉及的各个对象的统计信息对于RBO来说是没有任何作用的。

2,CHOOSE

CHOOSE是 ORACLE 9i中OPTIMIZER_MODE的默认值,它表示ORACLE在解析目标SQL时到底是使用RBO还是CBO取决于该SQL中所涉及的表的对象是否有统计信息,如果有统计信息就用CBO,否则用RBO。

3,FIRST_ROWS_n(n=1,10,100,1000)

此时ORACLE会使用CBO来解析目标SQL,且此时CBO在计算该SQL的各条执行路径的成本值时的测重点是在于以最快的响应速度返回头n(n=1,10,100,10000)条记录。

4,FIRST_ROWS

它是在ORACLE 9i中就已经过时的参数。

5,ALL_ROWS

它是ORACLE 10g以及后续ORACLE数据库版本中OPTIMIZER_MODE的默认值,它表示ORACLE会使用CBO来解析目标SQL,且此时CBO在计算该SQL的各条执行路径成本值时侧重点在于最佳的吞吐量(即最小的系统I/O和CPU资源的消耗量)。