没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
注:本资源来自于互联网。如有侵犯版权,请来信告知。我们立即予以处理。
注:本资源来自于互联网。如有侵犯版权,请来信告知。我们立即予以处理。
注:本资源来自于互联网。如有侵犯版权,请来信告知。我们立即予以处理。
注:本资源来自于互联网。如有侵犯版权,请来信告知。我们立即予以处理。
Oracle
Oracle
Oracle
Oracle 的优化器
的优化器
的优化器
的优化器 (Optimiz er)
(Optimiz er)
(Optimiz er)
(Optimiz er)
Oracle 在执行一个 SQL 之前 , 首先要分析一下语句的执行计划 , 然后再按执行计
划去执行。分析语句的执行计划的工作是由优化器 (Optimiz er) 来完成的。不同的情
况 , 一条 SQL 可能有多种执行计划 , 但在某一时点 , 一定只有一种执行计划是最优的 , 花
费时间是最少的。
关
关
关
关 键
键
键
键 词
词
词
词 :
:
:
:
Oracle 在执行一个 SQL 之前 , 首先要分析一下语句的执行计划 , 然后再按执行计划去执行。
分析语句的执行计划的工作是由优化器 (Optimiz er) 来完成的。 不同的情况 , 一条 SQL 可能 有
多种执行计划 , 但在某一时点 , 一定只有一种执行计划是最优的 , 花费时间是最少的。
相信你一定会用 Pl/sql Developer 、 Toad 等工具去看一个语句的执行计划 , 不过你可能对
Rule 、 Choose 、 First rows 、 All rows 这几项有疑问 , 因为我当初也是这样的 , 那时我也疑
惑为什么选了以上的不同的项 , 执行计划就变了 ?
1
1
1
1 、优化器的优化方式
、优化器的优化方式
、优化器的优化方式
、优化器的优化方式
Oracle 的优化器共有两种的优化方式 , 即基于规则的优化方式 (Rule-Based Optimiz ation,
简称为 RBO) 和基于代价的优化方式 (Cost-Based Optimiz ation, 简称为 CBO) 。
A 、 RBO 方式:优化器在分析 SQL 语句时 , 所遵循的是 Oracle 内部预定的一些规则。比如我
们常见的 , 当一个 where 子句中的一列有索引时去走索引。
B 、 CBO 方式:依词义可知 , 它是看语句的代价 (Cost) 了 , 这里的代价主要指 Cpu 和内存。优
化器在判断是否用这种方式时 , 主要参照的是表及索引的统计信息。统计信息给出表的大小
、有少行、每行的长度等信息。这些统计信息起初在库内是没有的 , 是你在做 analyz e 后 才
出现的 , 很多的时侯过期统计信息会令优化器做出一个错误的执行计划 , 因些我们应及时更
新这些信息。在 Oracle8 及以后的版本 ,Oracle 列推荐用 CBO 的方式。
我们要明了 , 不一定走索引就是优的 , 比如一个表只有两行数据 , 一次 IO 就可以完成全表的
检索 , 而此时走索引时则需要两次 IO, 这时对这个表做全表扫描 (full table scan) 是最好
的。
新版本的 oracle 逐渐抛弃对 Rule 方式的支持 , 即使是 Rule 方式 , 最后 sql 执行效率的衡量
标准都是 ,sql 执行消耗了多少资源 ? 对代价 (COST) 的优化方式 , 需要表 , 索引的统计信息 , 需
要每天多表和索引进行定时的分析 , 但是统计信息也是历史的 , 有时候也不一定是最优的 , 统
计信息等于就是一个人的经验 , 根据以前的经验来判断 sql 该怎么执行 ( 得到优化的 sql 执 行
路径 ), 所以具体优化执行的时候 , 先手工分析 sql, 看是用 RBO 方式消耗大 , 还是 CBO 消耗
大 ;DBA 的工作就是要根据当前 oracle 的运行日志 , 进行各种调整 , 使当前的 oracle 运行效
率尽量达到最优 . 可以在运行期间 , 采用 hint 灵活地采用优化方式 。
资源评论
onlycto
- 粉丝: 0
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功