greenZ

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Oracle性能:优化器optimizer

优化器  optimizer 的分类:
1.  RBO:只关注语句本身,不关注表的数据量。cost列值为空(可以用来 判断 执行计划 是RBO,还是CBO)。
2. CBO:考虑表的数据量和数据分布。
 
何时使用RBO,何时使用CBO:
1. 9i optimizer_mode 默认为 CHOOSE ,且默认使用 RBO。
9i 使用CBO的场景:
1) 使用了 rule 外的提示,例如,all_rows,first_rows
2) 表被分析过(即有统计信息)
3) 分区表 
2. 11g 默认使用 CBO
11g 使用RBO的场景:
1) 使用了 rule 提示
3. 分区表等高级功能是不支持 RBO 的(即使使用 rule 提示也不支持)。
 
使用hint指定优化器:
/*+ ALL_ROWS*/
/*+ FIRST_ROWS*/
/*+ CHOOSE*/
/*+ RULE*/
从 参考 连接 补上 含义!!!
 
-查看数据库默认的优化器:
select value from v$parameter where name='optimizer_mode';
 
判断优化器是 RBO 还是 CBO:根据 执行计划的 cost列值 进行判断
select /*+all_rows*/ sysdate from dual;
select /*+first_rows*/ sysdate from dual;
select /*+choose*/ sysdate from dual;
select /*+rule*/ sysdate from dual;
注意:hint写错了将作为注释,写对了才发挥相应作用。
 
 
 
 
posted on 2017-03-04 18:02  绿Z  阅读(670)  评论(0)    收藏  举报