日期:2013-07-20  浏览次数:20392 次


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有权利统计近程数据库索引的信息并对查询计划做出决定.