Oracle Optimizer:迁移到使用基于成本的优化器-----系列1.4
3.2.3最低要求
用CBO的最低要求是设置优化器模式为FRIST_ROWS或者ALL_ROWS(或CHOOSE)并为对象生成统计资料。然而,这并不能保证你的系统能工作到最佳状态。参照第二部分(初始化参数)涉及初始化参数的信息.
不管是否设置优化器模式。如果有以下情况之一,CBO将会自动调用:
1.用到提示.
2.用到分区表.
3.设置并行表
3.2.4为什么要移去RBO?
Oracle 9i第二版将是最后一个正式支持CBO的版本。 Oracle推荐所有合作伙伴和客户验证使用CBO的应用程序,尽管RBO在Oracle10i(现在称Oracle10G)仍然可用,但不受支持。
作为每一个已发布的Oracle笔记中,RBO的存在妨碍了Oralce对查询处理引擎的关键增强.它的移除将允许Oracle提高数据库引擎查询处理组件的性能和可靠性。
目前,Oracle 对RBO的支持仅仅用以有限的错误修正并且Oracle对RBO没有添加新的功能.
3.2.5 为什么移至CBO?
CBO主要获益如下:
1.以后Oracle停止RBO环境的开发.
2.随后的Oracle数据库将移除RBO
3.同CBO相比,RBO的访问方法是有限数量的.
4.所有新功能基于CBO,这些大多数新功能对于设置等等是重要的。簇索引表,位图索引,基于函数的索引,反向索引,哈希连接,物化视图,索引表,和并行查询, 星型连接等
5.媒介链接支持.
6.一旦RBO不受支持,Oracle支持也不可用。
7.CBO已经成熟
先前Oracle7中,RBO在某些场景胜过CBO,甚至CBO并不是如想像中完好,并且经常选择糟糕的执行计划。以后的发行版本中,CBO功能获得了提升,现在对于新功能,它提供了对考虑收益的较好交互性
8.分布式和远程查询更加可靠
在RBO中,数据库链接,从本地到远程数据库多于一个表的查询调整相当困难.同样的工作,CBO胜过了RBO。本地优化器知道远程表的目前统计信息,并且对于执行计划能做出更好的决定.RBO可能考虑远程数据库的索引,但是CBO有权利统计远程数据库索引的信息并对查询计划做出决定.