天道酬勤,学无止境

RUL

CBO与RULE 的区别

ORACLE的优化器有两种优化方式:基于规则的优化方式(Rule-Based Optimization,简称为RBO)RBO遵循简单的分级方法学,使用 15 种级别要点,当接收到查询,优化器将评估使用到的要点数目,然后选择最佳级别(最少的数量)的执行路径来运行查询。 基于代价的优化方式(Cost-Based Optimization,简称为CBO)CBO尝试找到最低成本的访问数据的方法,为了最大的吞吐量或最快的初始响应时间,计算使用不同的执行计划的成本,并选择成本最低的一个,关于表的数据内容的统计被用于确定执行计划。 IF 初始化参数 OPTIMIZER_MODE = CHOOSE THEN --(8I DEFAULT) IF 做过表分析 THEN 优化器 Optimizer=CBO(COST); /*高效*/ ELSE 优化器 Optimizer=RBO(RULE); /*高效*/ END IF; END IF;区别;RBO根据规则选择最佳执行路径来运行查询。 CBO根据表统计找到最低成本的访问数据的方法确定执行计划。 使用CBO需要注意: I) 需要经常对表进行ANALYZE 命令进行分析统计; II) 需要稳定执行计划; III)需要使用提示(Hint); 使用RULE 需要注意: I) 选择最有效率的表名顺序 II)优化SQL 的写法; 在optimizer_mode

2021-05-13 19:22:51    分类:博客    cbo   RUL