【解剖】Oracle-----Oracle优化-学习笔记(1.1)

学习笔记的目的:

l         督促自己总结从书中学到的知识深入研究。

l         对于书中一部分晦涩难懂的东西经过自己的提炼,希望能给其他学习者帮助。

l         添加书中不足的地方,增加试验指导,使理论和实践紧密连接在一起,快速提高Oracle优化方面知识。

l         在一个问题点上,扩展其他书中的知识,尽可能把其他本书中的相关精华联系在起来,构建一个稳健的知识体系。

l         两个表以上的连接成本问题进行分析。

l         综合现存市面上多本经典的Oracle优化书籍的精华,降低Oracle学习“成本”。

l         以实用为基础。

声明:所有内容均为凌蓝风原始创作,未经同意请勿转载。

环境说明:Oracle 10g R2 (CentOS 5)

 

【解剖】Oracle   主要针对一下问题(随时扩展)

1.Oracle优化

l         Oracle成本

l         影响Oracle成本的因素

l         执行计划分析】

l         SQL性能对设计者的影响

l         SQL优化(重点)

Ø         索引(如何设计索引、使用索引和索引的危害。)

Ø         如何查找IO问题

Ø         如何写出好SQL

l         特例问题分析

2.Oracle开发

3.Oracle管理

4.Oracle问题解决

 

Oracle优化-学习笔记(1.1)

问题:

I.                Oracle优化模式有那些?我们需要特殊指定优化模式吗?10g中使用那种模式?

II.             Oracle为什么放弃RBO,转向CBO

III.          Oracle成本是什么?

IV.           如何确认成本?

V.              成本和执行时间一定成正比吗?

VI.           Oracle 8i9i10g中成本计算的不同之处?

 

问题分析:

I.                Oracle优化模式有那些?我们需要特殊指定优化模式吗?10g中使用那种模式?

Oracle优化模式有:基于规则的优化(RBO)和基于成本的优化(CBO)

对于普通用户不需要指定优化模式,Oracle9i10g都是基于CBO的优化模式。

不过在Oracle 10g版本中,已经不再支持RBO规则。

II.             Oracle为什么放弃RBO,转向CBO

RBO和数据库一起产生,所谓规则就是更具SQL语句结构,产生执行计划,这里有个很严重的缺陷,忽略了数据特点、I/O分布、CPU性能和其他影响执行的因素,通俗点讲,就是不会随着数据的变化而变化,毕竟SQL语句的中心是数据。

CBO克服了RBO的缺点,但是又带来了另一个问题,就是我们如何确认成本?这个问题非常复杂,毕竟没有一个固定的“公式”能够完美的解决。这也是我们研究CBO的意义。

III.          Oracle成本是什么?

首先必须明确成本是什么,它是Oracle优化的重要依据,主要包含两方面的含义:

1.        诸如解释计划等工具导致的大量的执行次数。

2.        执行SQL语句导致的实际资源消耗。

IV.           如何确认成本?

通过执行计划可以看到SQL成本。

对于初级用户可以使用PL/SQL的在SQL状态,按F5功能快速看到执行计划。

V.              成本和执行时间一定成正比吗?

绝大多数时候成正比,但是也存在相反情况。

例:一个执行计划,使用散列连接的成本是700万,嵌套循环的成本是42,但是前者执行消耗时间未3秒,后者需要14小时。

当让这是个极端情况,只是用于说明问题。

VI.           Oracle 8i9i10g中成本计算的不同之处?

8i中,只是简单I/O子系数目,并选择I/O数目最小的作为执Oracle做了一个最理想的假设,读取1数据块实用的CPU资源和I/O资源一定比2数据块消耗的资源要。还忽略了Oracle缓冲区所问题。

 

9i中,优化器追加了CPU成本计算功能,优化器自动把这些因子引入到成本方程中,并计算出更加符合实际执行计划。比8i更加符合接近实际。优化器可以更好地估计表扫描的成本。

成本公式如下:

成本= (单数据块的个数×单数据块读取时间 + 多数据块的个数×多数据块读取时间 + CPU处理时间) / 单数据块读取时间。

 

10g中,优化器追加了脱机优化器功能,用于存储关键的统计信息,以帮助联机优化器处理有关数据的分布问题。

 

所以 8i升级到 9i或是10g需要更多的测试。

Oracle每次大版本号的升级都是对算法做了比较重要的变更,需要多注意。

 

待续。。

                                                                                        2008-8-7 凌蓝风

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值