问:Oracle CBO、RBO以及统计之间是什么关系? 答:你提交查询时,Oracle通常有很多种执行该查询的方法。“我是不是该用到索引?我应该用哪种连接方式?”在Oracle执行该查询之前,它还要决定这些问题的答案从而选择最佳执行路径。 Oracle以前的版本采用了一系列规则决定最佳执行路径。其中的一条规则就是:如果存在索引,就使用索引。
这些规则还分了等级,所以一些规则要胜过另一些规则。所有这些规则都叫做基于规则的优化程序(RBO)。 现在来看看只有两个数据行和一个索引的数据库表。在查询在这个表时不用使用该索引,因为这样做还会带来其他的操作。
你只需要读包括这两个行的模块、忽视索……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
问:Oracle CBO、RBO以及统计之间是什么关系?
答:你提交查询时,Oracle通常有很多种执行该查询的方法。“我是不是该用到索引?我应该用哪种连接方式?”在Oracle执行该查询之前,它还要决定这些问题的答案从而选择最佳执行路径。
Oracle以前的版本采用了一系列规则决定最佳执行路径。其中的一条规则就是:如果存在索引,就使用索引。这些规则还分了等级,所以一些规则要胜过另一些规则。所有这些规则都叫做基于规则的优化程序(RBO)。
现在来看看只有两个数据行和一个索引的数据库表。在查询在这个表时不用使用该索引,因为这样做还会带来其他的操作。你只需要读包括这两个行的模块、忽视索引。但以前的RBO可以执行其他的操作,因为RBO不够灵活,它不能理解只包括少数几个行的表,所以它不能充分利用这个索引。这一概念就让我们回到了基于开销的Oracle优化程序(CBO)上。CBO基于数据分配、表中的行数等进行决策,所以CBO需要有关表和索引的一些信息。如果采用CBO,我们就要对它使用的表和所引进行统计。而RBO则不会用到这些统计数据。
作者
Techtarget旗下Searchoracle网站的资深专家,有16年IT行业经验、计算机科学硕士、专攻数据库方向,曾担任系统管理员等职。此外,他还获Oracle 7.3、8和8i的OCP数据库管理员证书,目前为SGT Inc.公司首席DBA。
翻译
相关推荐
-
在适当的时候使用双引号以避免无效的标识符
Oracle通常将没有引号的标识符转换成大写键盘的,在提交查询时你必须给列名加入双引号以避免出现错误。
-
Oracle千万条记录插入与查询小结
最近做了个项目,实现对存在千万条记录的库表进行插入、查询操作。原以为对数据库的插入、查询是件很容易的事,可不知当数据达到百万甚至千万条级别的时候,这一切……
-
教你恢复丢失的归档日志文件数据库
从一周前的热备转储数据文件,不幸的是丢失了几个归档日志文件。但是有问题的数据文件包含了最重要的表,如何能够挽救数据呢?
-
Oracle命令中的USING BACKUP CONTROLFILE子句
你能解释一下下面的查询是如何运行的吗?查询语句为:alter database recover automatic using backup control file until cancel。