暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【看懂oracle执行计划】基于规则的优化器(RBO)

程序猿的向往 2021-04-22
502

点击上方蓝字关注我们

01

简介

基于规则的优化器(RBO)是通过编码在Oracle数据库中的一系列固定的规则,来决定目标SQL的执行计划。
Oracle事先给各种类型的执行路径定一个等级,从1到15,等级1对应执行路径的执行效率最高,等级15对应执行路径的执行效率最低。对于等级相同的执行计划,oracle根据目标对象在数据字典中缓存的顺序判断选择哪一种执行计划。在决定目标SQL的执行计划时,RBO会从该SQL的诸多执行路径中选择一条等级最低的执行路径来作为其执行计划。
RBO中等级1对应的执行路径是“single row by rowid(通过rowID来访问单行数据)”,等级15所对应的执行路径是“full table scan(全表扫描)”。

02

RBO的缺陷

RBO的执行计划很难调整

目标SQL的写法及各个对象在该SQL文本中出现的先后顺序都会影响执行计划

Oracle数据中的很多新特性、功能,均不支持RBO

没有考虑目标SQL所涉及对象的实际数据量

03

RBO执行计划的调整

等价改写SQL

Equivalent rewriting of SQL

Number或Date类型的字段加上0,Varchar类型拼接上空字符'',使本来走索引的现在不走索引,对于多表连接的改变form后表的先后顺序可以影响表连接顺序

缓存顺序

Cache order

如果出现多条等级值相同的执行路径,改变目标SQL中涉及相关对象数据字典缓存(Data Dictionary Cache)的缓存顺序

SQL文本中的先后顺序

Sequence in SQL text

如果出现多条等级值相同的执行路径,改变目标SQL中涉及相关对象在SQL文本中出现的先后顺序

扫码

长按关注

关注

惊喜不断

最后修改时间:2021-04-22 11:16:41
文章转载自程序猿的向往,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论