正确理解CBO和RBO之间的关系

日期: 2009-01-13 作者:Brian Peasland翻译:April 来源:TechTarget中国 英文

问:Oracle CBO、RBO以及统计之间是什么关系?   答:你提交查询时,Oracle通常有很多种执行该查询的方法。“我是不是该用到索引?我应该用哪种连接方式?”在Oracle执行该查询之前,它还要决定这些问题的答案从而选择最佳执行路径。   Oracle以前的版本采用了一系列规则决定最佳执行路径。其中的一条规则就是:如果存在索引,就使用索引。

这些规则还分了等级,所以一些规则要胜过另一些规则。所有这些规则都叫做基于规则的优化程序(RBO)。   现在来看看只有两个数据行和一个索引的数据库表。在查询在这个表时不用使用该索引,因为这样做还会带来其他的操作。

你只需要读包括这两个行的模块、忽视索……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

:Oracle CBO、RBO以及统计之间是什么关系?

  答:你提交查询时,Oracle通常有很多种执行该查询的方法。“我是不是该用到索引?我应该用哪种连接方式?”在Oracle执行该查询之前,它还要决定这些问题的答案从而选择最佳执行路径。

  Oracle以前的版本采用了一系列规则决定最佳执行路径。其中的一条规则就是:如果存在索引,就使用索引。这些规则还分了等级,所以一些规则要胜过另一些规则。所有这些规则都叫做基于规则的优化程序(RBO)。

  现在来看看只有两个数据行和一个索引的数据库表。在查询在这个表时不用使用该索引,因为这样做还会带来其他的操作。你只需要读包括这两个行的模块、忽视索引。但以前的RBO可以执行其他的操作,因为RBO不够灵活,它不能理解只包括少数几个行的表,所以它不能充分利用这个索引。这一概念就让我们回到了基于开销的Oracle优化程序(CBO)上。CBO基于数据分配、表中的行数等进行决策,所以CBO需要有关表和索引的一些信息。如果采用CBO,我们就要对它使用的表和所引进行统计。而RBO则不会用到这些统计数据。

作者

Brian Peasland
Brian Peasland

Techtarget旗下Searchoracle网站的资深专家,有16年IT行业经验、计算机科学硕士、专攻数据库方向,曾担任系统管理员等职。此外,他还获Oracle 7.3、8和8i的OCP数据库管理员证书,目前为SGT Inc.公司首席DBA。

翻译

April
April

相关推荐