`
izuoyan
  • 浏览: 8948540 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle的优化原理

阅读更多
前面讲了ORACLE性能调优原则,但是可能有许多朋友不知道ORACLE优化机理到底是什么?下面作一简单说明。

解释

先说明一下,ORACLE有一个优化器(Optimizer),ORACLE的优化机理就是从Optimizer开始的。

明确两个概念:Optimizer 对ORACLE的优化方式有两种,一种是基于规则的,我们称为RBO(Rule-Based Optimization),一种是基于代价的CBO(Cost-Based Optimization),我们从字面就可基本理解这两个优化方式的含义,不错,RBO是根据ORACLE的内定规则实现的,比如我在“ORACLE性能调优原则”中讲到的:索引,索引就是ORACLE的内定规则;而对于CBO,由于是基于代价的,也就是ORACLE机器的资源了,比如CPU和内存等,这个时候有朋友就问了,既然有这两个方式,那ORACLE到底如何选择呢,其实,这个问题有一半需要我们自己回答,有一半由ORACLE回答。因为我们在安装ORACLE时就已决定了ORACLE到底调用什么方式,这个就是init.ora中设定的OPTIMIZER_MODE参数,如果我们设为OPTIMIZER_MODE=RULE,它就会按RBO方式进行,反之按CBO了。当然,我们在开发程序时也可认为的改变规则,如SQL:

SELECT /*RULE*/ * FROM TABLE_NAME ,这个就使ORACLE强制使用RBO规则了,当然,ORACLE也比较“聪明”,它会根据用户检索表和该表的索引的统计信息来选择优化方式了,这里就出现了一个问题了,如果统计信息是陈旧的或者说是错误的,我们就必须用analyze人为的对表和索引进行重新统计了。

ORACLE的优化模式有如下几种:RULE,CHOOSE,FIRSTROWS,ALLROWS四种,这四种模式必须和前面讲的优化方式放在一起解释,CHOOSE就是选择的意思,如果有表和索引有统计信息,ORACLE就会CHOOSE CBO的优化方式了。对于FIRSTROWS,我给的解释是它和CHOOSE差不多,只是以最快的方式返回前面的记录行了;当然了ALLROWS就是以最快的方式返回所有行。

以上讲了ORACLE的优化方式和优化模式,以及ORACLE如何选择,下面我再讲讲我们认为的改变ORACLE的优化了:

1、 修改ORACLE的init.ora的OPTIMIZER_MODE参数;

2、 在写SQL时人为指定优化方式,如:SELECT /*RULE*/ * FROM TABLE_NAME

3、 为不让ORACLE犯错误,我们有必要在日常维护中使用如下语句来优化表和索引:

spool d:\temp\analyze_table.sql

SELECT 'analyze table '||table_name||' compute statistics;' from user_tables;

spool off

spool d:\temp\analyze_index.sql

SELECT 'analyze index '||index_name||' compute statistics;' from user_indexes;

spool off

上面的SQL将对我们的表和索引产生批量的SQL,我们再执行这些SQL就行了。

OK,这些就是ORACLE的优化机理和我们人为的影响了,相信大家明白了,希望对大家有所帮助。

分享到:
评论

相关推荐

    Oracle优化器案例与原理分析(盖国强)

    Oracle优化器案例与原理分析(盖国强),不错的oracle资料。

    Oracle中SQL语句优化原理分析

    Oracle中SQL语句优化原理分析

    Oracle优化器介绍

    Oracle优化器的概念、工作原理和使用方法,兼顾了Oracle8i、9i以及最新的10g三个版本。理解本文将有助于您更好的更有效的进行SQL优化工作。

    oracle数据库性能优化与内部原理解析

    数据库性能优化与内部原理解析,主要实验案例,给学习者带来更多实操的机会

    Oracle数据库性能优化PDF

    资源名称:Oracle数据库性能优化 PDF内容简介:本书面向实际应用,从多个角度出发,对Oracle优化中的很多关键问题进行了深入全面的探讨,涵盖了Oracle优化的各个技术层面,从内存优化、IO规划及优化,到SQL优化调整...

    Oracle DBA手记3-数据库性能优化与内部原理解析 中文版

    《oracle dba手记3:数据库性能优化与内部原理解析》由多位数据库技术专家合著而成,融合了各行业dba 的工作经验与思考,包含了精心挑选的数据库性能优化与内部原理解析案例。内容涵盖“dba 手记”,以手记形式记录...

    oracle 优化资料

    oracle 优化资料,sql语句规,表连接方式和原理。

    Oracle性能调优原理及具体手段

    Oracle性能调优原理及具体手段。数据库的作用就是实现对数据的管理和查询。任何一个数据库系统,必然存在对数据的大量读或者写或者两种操作都大量存在。I/O 问题也往往是导致数据库性能问题的重要原因。在这篇文章中...

    Oracle索引优化相关

    Oracle数据库经典优化之索引原理篇 Oracle中建立索引并强制优化器 基于索引的SQL语句优化之降龙十八掌 30个Oracle语句优化规则详解-性能调优

    Oracle Freelist和HWM原理及性能优化

    本文以FreeList为线索对Oracle的存储管理的原理进行较深入的探讨,涉及Oracle段区块管理的原理,FreeList算法等

    ORACLE性能优化工具整理

    关于Oracle性能优化的相关工具的介绍,如AWR,ASH,ADDM等的详细原理介绍及实践使用,非常有用

    ORACLE索引详解及SQL优化

    ORACLE索引详解及SQL优化,详细描述了几种常用索引原理以及创建方法,解读索引生效条件,以及在开发中常用的提高数据库效率、降低数据库资源消耗的方法。

    Oracle Sql 性能优化

    ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾. 3、SELECT中避免使用 ‘ * ‘: ORACLE在解析的过程中, ...

    Oracle_DBA手记3-数据库性能优化与内部原理解析

    学习Oracle_DBA手记3-数据库性能优化与内部原理解析 加强作为DBA的能力

    oracle 优化

    oracle 优化经验,大量实际应用中适用的优化原理

    oracle优化笔记

    以 d 打头的记录后, ORACLE 就停止遍历了!为啥,因为索引是有序的,当出现 d 打头的 记录后,绝对后面不可能再出现 c 打头的记录了,因为我们是查询=cc 的值,当然停住了。 随时停止检索相比遍历全表,明显是少...

    oracle数据库优化PPT

    oracle相关培训,包括数据结构调优,解决数据瓶径;多种优化步骤等。

    Oracle数据库的查询优化

    讨论了Oracle访问数据库的两种方法和其优化器工作原理,并在此基础上介绍了如何对SQL语句进行优化

    Oracle Freelist和HWM原理探讨及相关性能优化

    近期来,FreeList的重要作用逐渐为 Oracle DBA所认识,网上也出现一些相关的讨论。...在原理探讨的基础上,介绍了常用的存储参数分析方法,并对所涉及的存储优化、HWM的优化和Freelist竞争优化作了说明。

    ORACLE数据库中的SQL优化原理与应用.pdf

    ORACLE数据库中的SQL优化原理与应用.pdf

Global site tag (gtag.js) - Google Analytics