CBO
RBO
Rule-Based Optimization 基于规则的优化器,
根据数据库结构(表结构、索引等进行自动优化)。
Oracle10起弃用。
CBO
Cost-Based Optimization 基于代价的优化器,
根据数据库统计信息(系统性能信息、数据信息)进行代价估算,自动选择优化方案。
Oracle8引入,Oracle10替代RBO。
CBO系统性能统计
- 无负载时统计负载下系统性能
dbms_stats.gather_system_stats(gathering_mode => 'noworkload');
- 统计1小时的负载下系统性能
dbms_stats.gather_system_stats(gathering_mode => 'interval',interval => 60);
- 查询统计结果
select * from sys.aux_stats$
CBO数据统计
- 设置开启分区表增量优化
dbms_stats.set_table_prefs('ROOT','C_DETAIL','INCREMENTAL','TRUE');
- 统计用户下所有表、分区(不含子分区)、索引
dbms_stats.gather_schema_stats(ownname => 'ROOT',cascade => true);
- 统计表数据信息
dbms_stats.gather_table_stats(ownname => 'ROOT',tabname => 'C_DETAIL',method_opt=> 'for all indexed columns');
- 查询Oracle自动收集任务
select * from dba_autotask_task t where t.CLIENT_NAME='auto optimizer stats collection'
- 查询表统计信息
select * from user_tab_statistics a where a.TABLE_NAME = 'C_MATSER'
- 查询表字段统计信息
select * from user_tab_col_statistics a where a.TABLE_NAME = 'C_DETAIL'
- 查询表字段直方图
select * from user_tab_histograms a where a.TABLE_NAME = 'C_DETAIL'
- 查询索引统计信息
select * from user_ind_statistics a where a.TABLE_NAME = 'C_DETAIL'
解释计划
- 含义:Oracle准备如何执行语句的说明
- 使用方式:
- 开发工具如PL/SQL Developer的F5功能
- 使用SQL查询
- 首先Explan plan for SQL;
- 然后查询解释计划select * from table(dbms_xplan.display);
- 解释计划字段说明:
| 字段 | 说明 |
|---|---|
| DESCRIPTION | 操作描述 |
| OPERATION | 当前步骤的操作,值包括DELETE STATEMENT,INSERT STATEMENT,SELECT STATEMENT,UPDATE STATEMENT |
| OPTIONS | 处理方式 |
| OBJECT_OWNER | 表或索引的用户名 |
| OBJECT_NAME | 表或索引的名称 |
| OPTIMIZER | 使用的优化器 |
| ID | 执行计划的步骤编号. |
| PARENT_ID | 父步骤编号 |
| DEPTH | 解释计划步骤的深度 |
| TIME | 预期本步骤执行的时间 |
| COST | 成本,由CPU_COST和IO_COST计算得出,无单位,可作为优化的参考值。 |
| CPU_COST | CPU 成本. |
| IO_COST | I/O成本.值与操作访问的数据块数量成正比. |
| CARDINALITY | 本操作的访问数据行大小 |
| BYTES | 本操作的访问数据字节大小 |
| PARTITION_START | 查询的开始分区:N表明开始查找的分区编号.KEY 表面开始分区在运行时确定. |
| PARTITION_STOP | 结束分区编号:N表明结束查找的分区编号.KEY 表明结束分区在运行时确定. |
| ACCESS_PREDICATES | 访问谓词 |
| FILTER_PREDICATES | 过滤数据行的谓词. |
本文深入解析Oracle数据库中的两种优化器:基于规则的优化器(RBO)与基于代价的优化器(CBO)。介绍两者的工作原理及Oracle版本演进中地位的变化,并详细阐述了CBO系统性能统计与数据统计的方法,包括统计信息的收集与查询。此外,还提供了查询解释计划的方式及其字段说明。
949

被折叠的 条评论
为什么被折叠?



