Oracle优化器详解,通宵整理,透彻超详细

简介: Oracle优化器详解,通宵整理,透彻超详细

一、 什么是优化器



   优化器是 SQL 分析和执行的优化工具,他负责制定 SQL 的执行计划,
   比如什么时候是全表扫描(FTS full table scan),什么时候是索引范围搜索(Index Range
Scan),或者是全索引扫描(INDEX fast full scan,INDEX_FFS);
如果是表于表之间连接的时候,它会负责去定表之间以一种什么样子的形式来关联,
比如 HASH_JOIN 还是 NESTED LOOPS 或者是 MERGE JOIN。
这些因素直接决定了 SQL 的执行效率,所以优化器是 SQL 执行的核心!!!
注释:SQL 执行一定会有代价。


二、 优化器的种类


Rule Based Optimizer(RBO)基于规则,一套死板的规则来控制数据访问
Cost Based Optimizer(CBO)基于成本,或者讲统计信息,依据一套数据模型,
计算数据访问和处理的成本,选择最优成本作为执行方案
CBO 方式:它是看语句的代价(Cost),这里的代价主要指 Cpu 和内存。
优化器在判断是否用这种方式时,主要参照的是表及索引的统计信息。
统计信息给出表的大小、有少行、每行的长度等信息。
这些统计信息起初在库内是没有的,是做完收集统计信息后才出现的,
很多的时侯过期统计信息会令优化器做出一个错误的执行计划,因些应及时更新这些信息。
注意:走索引不一定就是优的,比如一个表只有两行数据,
一次 IO 就可以完成全表的检索,而此时走索引时则需要两次 IO,
这时全表扫描(full table scan)是最好。


三、CBO优化器的结构



CBO包含以下组件:查询转换器、评估器、计划生成器


f4c579951eac405fbc737f99db3c78c2.png


3.1 查询转换器


改变查询语句的形式,以产生较好的执行计划
例如:绑定变量虽然可以有效的减少“硬分析”,Oracle只允许第一次调用时进行“窥视”,
接下来的调用即使绑定变量的值发生了变化,也仍然是使用第一次生成的执行计划


3.2 评估器


通过计算三个值来评估计划的总体成本(累加):
选择性(Selectivity 0-1之间)
基数(Cardinality)
成本(Cost)


3.3 计划生成器


计划生成器的作用就是生成大量的执行计划,然后选择其中总体成本最低的一个


目录
相关文章
|
SQL Oracle 关系型数据库
Oracle优化04-Optimizer优化器
Oracle优化04-Optimizer优化器
108 0
|
SQL Oracle 关系型数据库
Oracle 优化器
Oracle 优化器目录 什么是优化器基于规则优化器RBORBO的缺点基于成本的优化器CBO什么是CBOCBO相关概念_CardinalityCBO相关概念_可选择率CBO相关概念_可传递性CBO的局限性oracle 优化器模式的切换 正文 回到顶部什么是优化器  优化器是Oracle中的一个核心模块,它的作用是为用户输入的SQL选择一个它计算出来的最高效的执行计划。
1145 0
|
Oracle 关系型数据库 索引
|
SQL Oracle 关系型数据库
|
SQL Oracle 关系型数据库
PLSQL_性能优化系列04_Oracle Optimizer优化器
2014-09-25 Created By BaoXinjian 一、摘要 1. Oracle优化器介绍 本文讲述了Oracle优化器的概念、工作原理和使用方法,兼顾了Oracle8i、9i以及最新的10g三个版本。
1049 0

推荐镜像

更多