Oracle] 基于规则的优化器(RBO用于理解执行计划的基于规则的优化器 (RBO)
最编程
2024-04-03 10:07:24
...
【Oracle】看懂执行计划之基于规则的优化器(RBO)
简介
基于规则的优化器(RBO)是通过编码在 Oracle 数据库中的一系列固定的规则,来决定目标 SQL 的执行计划。Oracle 事先给各种类型的执行路径定一个等级,从 1 到 15,等级 1 对应执行路径的执行效率最高,等级 15 对应执行路径的执行效率最低。对于等级相同的执行计划,oracle 根据目标对象在数据字典中缓存的顺序判断选择哪一种执行计划。在决定目标 SQL 的执行计划时,RBO 会从该 SQL 的诸多执行路径中选择一条等级最低的执行路径来作为其执行计划。
RBO 中等级 1 对应的执行路径是“single row by rowid(通过 rowID 来访问单行数据)”,等级 15 所对应的执行路径时“full table scan(全表扫描)”。
RBO 的缺陷
- RBO 的执行计划很难调整
- 目标 SQL 的写法及各个对象在该 SQL 文本中出现的先后顺序都会影响执行计划
- Oracle 数据中的很多新特性、功能,均不支持 RBO
- 没有考虑目标 SQL 所涉及对象的实际数据量
RBO 执行计划的调整
-
等价改写 SQL
Number 或 Date 类型的字段加上 0,Varchar 类型拼接上空字符’’,使本来走索引的现在不走索引,对于多表连接的改变 form 后表的先后顺序可以影响表连接顺序
-
如果出现多条等级值相同的执行路径,改变目标 SQL 中涉及相关对象数据字典缓存(Data Dictionary Cache)的缓存顺序
-
如果出现多条等级值相同的执行路径,改变目标 SQL 中涉及相关对象在 SQL 文本中出现的先后顺序
上一篇: 基于规则的优化器(RBO)分析 | 青年训练营笔记
下一篇: 优化器的 RBO 和 CBO
推荐阅读
-
数据库的基于规则的优化(RBO)和基于成本的优化(CBO)
-
星云图源代码阅读系列 | Vol.04 基于 RBO 的优化器实现
-
SQL 优化 - RBO(基于规则的优化)
-
优化器-RBO 的规则转换
-
Spark SQL 语句解析和基于规则的优化(RBO)简介
-
Oracle] 基于规则的优化器(RBO用于理解执行计划的基于规则的优化器 (RBO)
-
基于规则的优化器(RBO)分析 | 青年训练营笔记
-
PostgreSQL 是基于规则的优化(RBO)还是基于成本的优化(CBO)?
-
Spark - Spark SQL 中的 RBO, CBO 与 AQE 简单介绍-RBO(基于规则的优化)
-
数据库的基于规则的优化(RBO)和基于成本的优化(CBO)