最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
开启左侧

数据库基于规则优化(RBO)和基于代价优化(CBO)

[复制链接]
发表于 2021-1-23 11:53:49 | 显示全部楼层 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
RBO和CBO是两种数据库引擎在执行sql语句时的优化策略。

什么是基于规则的优化(Rule Based Optimizer)?
这是一种比较老的技术,简单说基于规则的优化就是当数据库执行一条query语句的时候必须遵循预先定义好的一系列规则(比如Oracle的15条规则,排名越靠前的执行引擎认为效率越高https://docs.oracle.com/cd/B10501_01/server.920/a96533/rbo.htm#38960)来确定执行过程,它不关心访问表的数据分布情况,仅仅凭借规则经验来确定,所以说是一种比较粗放的优化策略。
例如:如果查询表存在可以利用的索引(index),RBO总是会优先选择索引来扫描数据,这通常是比较简单但可能并不是最好的策略。
比如说,一张员工表的性别这一列存在索引,有男员工95名,女员工5名,如果执行如下sql语句:SELECT * FROM emp WHERE gender = 'MALE'; 显然选择索引来查询的话性能相比普通的全表扫描后过滤会差。

什么是基于代价的优化(Cost Based Optimizer)?
基于代价的优化的产生就是为了解决上面RBO的弊端,让执行引擎依据预先存储到数据库中表的一些实时更新的统计信息来选择出最优代价最小的执行计划来执行query语句,CBO会根据统计信息来生成一组可能被使用到的执行计划,进而估算出每个计划的代价,从而选择出代价最小的交给执行器去执行,其中表的统计信息一般会有表大小,行数,单行长度,单列数据分布情况,索引情况等等。


总结:
基于规则的优化器更像是一个经验丰富熟知各条路段的老司机,大部分情况可以根据自己的经验来判断走哪条路可以更快的到达目的地,而基于代价的优化更像手机里面的地图,它可以选择出许多不同的路径根据实时的路况信息综合考虑路程长度,交通状况来挑出最优的路径。

楼主热帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-3-29 21:13

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表