ORACLE数据库SQL优化--->Oracle里的优化器
2014-02-11 16:31
519 查看
对所有的关系型数据库而言,优化器无疑使其中最核心的部分,因为优化器负责解析SQL,而我们又都是通过SQL来访问存储在关系型数据库中的数据的。所有优化器的好坏直接决定该关系型数据库的强弱。
那什么是优化器呢(Optimizer)?优化器是ORACLE数据库中内置的一个核心子系统,你也可以把他理解成是ORACLE数据库中一个核心模块或者一个核心功能组件。优化器的目的是按照一定的判断原则来得到它认为的目标SQL在当前情形下最高的执行路径(Access Path),也就是说,优化器的目的就是得到目标SQL的执行计划。
Oracle的优化器(Optimizer)分为RBO(Rlue-Based Optimizer:基于规则的优化器)和CBO(Cost-Based Optimizer基于成本的优化器)这两中类型.为了得到目标SQL的执行计划,RBO所用的判断原则为一组内置的规则,这些规则是硬编码在ORACLE数据库代码中的,RBO会根据这些规则从目标SQL诸多的可能的执行计划中选择一个来 作为其执行计划;而CBO所用的判断原则为成本,CBO会从目标SQL诸多可能的执行路径中选择成本值最小的一条来作为其执行计划,各个执行路径的成本值是根据目标SQL语句所涉及的表,索引,列等相关对象的统计信息计算出来的。
其中在这个解析的过程中,ORACLE会执行对目标SQL的语法,语义和权限检查。
上面提到基于规则的优化器(RBO)是通过硬编码在ORACLE数据库代码中的一系列固定的规则,来决定目标SQL的执行计划的。具体就是ORACLE设置了1到15个等级,其中1等级表示执行效率最高,15对应的执行路径的执行效率最低。在ORACLE数据库里,对应OLTP类型的SQL语句而言,显然通过ROWID来访问时效率最高的方式,而通过全表扫描来访问的效率是最低的。于是,对应的等级1的执行路径是“single row by rowid(通过ROWID来访问单行数据)”,而等级15是“full
table scan(全表扫描)”。
RBO在ORACLE中由来已久,虽然ORACLE 10G开始,RBO已经不再被ORACLE支持,但是RBO相关的功能并没有从ORACLE中移除。
那什么是优化器呢(Optimizer)?优化器是ORACLE数据库中内置的一个核心子系统,你也可以把他理解成是ORACLE数据库中一个核心模块或者一个核心功能组件。优化器的目的是按照一定的判断原则来得到它认为的目标SQL在当前情形下最高的执行路径(Access Path),也就是说,优化器的目的就是得到目标SQL的执行计划。
Oracle的优化器(Optimizer)分为RBO(Rlue-Based Optimizer:基于规则的优化器)和CBO(Cost-Based Optimizer基于成本的优化器)这两中类型.为了得到目标SQL的执行计划,RBO所用的判断原则为一组内置的规则,这些规则是硬编码在ORACLE数据库代码中的,RBO会根据这些规则从目标SQL诸多的可能的执行计划中选择一个来 作为其执行计划;而CBO所用的判断原则为成本,CBO会从目标SQL诸多可能的执行路径中选择成本值最小的一条来作为其执行计划,各个执行路径的成本值是根据目标SQL语句所涉及的表,索引,列等相关对象的统计信息计算出来的。
其中在这个解析的过程中,ORACLE会执行对目标SQL的语法,语义和权限检查。
上面提到基于规则的优化器(RBO)是通过硬编码在ORACLE数据库代码中的一系列固定的规则,来决定目标SQL的执行计划的。具体就是ORACLE设置了1到15个等级,其中1等级表示执行效率最高,15对应的执行路径的执行效率最低。在ORACLE数据库里,对应OLTP类型的SQL语句而言,显然通过ROWID来访问时效率最高的方式,而通过全表扫描来访问的效率是最低的。于是,对应的等级1的执行路径是“single row by rowid(通过ROWID来访问单行数据)”,而等级15是“full
table scan(全表扫描)”。
RBO在ORACLE中由来已久,虽然ORACLE 10G开始,RBO已经不再被ORACLE支持,但是RBO相关的功能并没有从ORACLE中移除。
相关文章推荐
- ORACLE数据库SQL优化--->Oracle表连接方法
- ORACLE数据库SQL优化--->ORACLE访问数据的方法
- ORACLE数据库SQL优化--->Oracle表连接类型
- Oracle - SQL 优化 -------- > SET AUTOTRACE 中Statistics(统计信息)说明
- ORACLE数据库SQL优化--->优化器基础知识
- ORACLE数据库SQL优化--->如何得到真实的执行计划
- Oracle - SQL 优化 -------- > 创建计划表
- <<Oracle数据库性能优化艺术(第五期)>> 第11周 sql_trace及10046
- ORACLE数据库SQL优化--->基于成本的优化器
- ORACLE数据库SQL优化--->如何执行计划的执行顺序
- Oracle - SQL 优化 -------- > 创建PLUSTRACE角色
- Oracle SQL 'or' 的优化,最近的案例一则。
- <<Oracle数据库性能优化艺术(第五期)>> 第4周 优化器
- <<Oracle数据库性能优化艺术(第五期)>> 第5周 Hints
- oracle sql依然无可替代--《mastering oracle sql>
- 【MySQL 帮助】帮朋友优化SQL的过程-->从4S到0.011秒
- Oracle(六)--> PL/SQL 开篇(PL/SQL 的概念及代码)
- <<Oracle数据库性能优化艺术(第五期)>> 第6周 等待事件
- Oracle(七)--> PL/SQL 流程及要点(描述清晰 and 多图)
- ORACLE DBA常用SQL脚本工具->管理篇(1)