Oracle的优化原理

youlintinghai

youlintinghai

2016-02-19 19:45

下面是个简单易学的Oracle的优化原理教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!

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

    解释

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

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

    明确两个概念: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的优化了:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

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

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

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

    spool d:empanalyze_table.sql

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

    spool off

    spool d:empanalyze_index.sql

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

    spool off

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

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

展开更多 50%)
分享

猜你喜欢

Oracle的优化原理

编程语言 网络编程
Oracle的优化原理

ORACLE优化器

SQLServer
ORACLE优化器

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

优化Oracle网络设置

编程语言 网络编程
优化Oracle网络设置

如何选择Oracle优化器

电脑网络
如何选择Oracle优化器

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Oracle临时表 优化查询速度

编程语言 网络编程
Oracle临时表 优化查询速度

优化Oracle库表设计的若干方法

SQLServer
优化Oracle库表设计的若干方法

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

用javascript/css实现GridView行背景色交替、点击行变色

用javascript/css实现GridView行背景色交替、点击行变色

在ORACLE里按用户名重建索引的方法

在ORACLE里按用户名重建索引的方法
下拉加载更多内容 ↓