Oracle数据库优化方案

详解Oracle数据库优化方案与实践时间:2010-02-26 14:04:51来源:网络 作者:未知 点击:817次

一、前言

二、ORACLE数据库优化概述

1、内存等参数配置的优化

2、减少物理读写的优化

3、批量重复操作的SQL语句及大表操作的优化

二、ORACLE数据库优化方案

1、内存等Oracle系统参数配置

2、使用索引

3、表分区

4、Procedure优化

5、其他改造

6、维护作业计划

三、ORACLE数据库优化前后比较

1、批量重复的SQL语句执行性能

2、一些单次、不常用的操作的语句执行性能

四、参考

1、常用的优化工具

2、参考文献

一、前言

随着实际项目的启动,实际项目中使用的 Oracle数据库经过一段时间的运行,在线保存的数据量和业务处理的数据量在逐渐增大,最初的Oracle设置,与现在实际需要的运行性能有一定差距,需要进行一些优化调整。

本文将结合本人实际维护经验,相应地提出实际项目数据处理的一些优化方法,以供参考。

适用于Oracle 9i。

二、Oracle数据库优化概述

Oracle数据库的优化,针对不同的应用,会有侧重点不同的优化方法,根据我们实际项目的应用特点,我们主要关心的是每次事务执行完成的时间长短。

从Oracle数据库本身的特点,我们可以把优化工作划分为初始优化设置,微优化。

在初始优化设置时,我们只能根据硬件情况,估计业务运行的情况,综合经验,给出一种经验设置,大体上来说,这种经验设置离满足优化需求的目标不是很远。在完成了初始优化设置后,经过一段时间的业务运行,已可开始收集实际运行环境的性能数据,此时,就可以对各种Oracle性能指标、各种关心的事务操作进行性能评估,然后进行微优化了。

Oracle优化,不是一个一蹴而就的工作,也不是一个一劳永逸的工作,需要定期维护,定期观察,在发现性能瓶颈时及时进行调整。Oracle总是存在性能瓶颈的,不使用、不操作的数据库总是最快的,在解决当前瓶颈后,总是会有另一个瓶颈出现,所以在优化前,我们需要确定一个优化目标,我们的目标是满足我们的应用性能要求就可以了。

Oracle优化,涉及的范围太广泛,包含的有主机性能,内存使用性能,网络传输性能,SQL语句执行性能等等,从我们面向网管来说,满足事务执行速度性能主要表现在:

1)批量重复的SQL语句执行性能(主要是通过Procedure计算完成数据合并和数据汇总的性能和批量数据采集入库的性能);

2)一些单次、不常用的操作的语句执行性能(主要是GUI的非规律操作)。

根据这两个特点,我们可把优化方法归纳到3个重要方向:

1)内存等参数配置的优化。内存优化,是性能受益最快的地方。

2)减少物理读写的优化。内存逻辑I/O操作的时间,远远小于物理I/O的操作时间。

3)批量重复操作的SQL语句及大表操作的优化。减少SQL执行次数,减少大表操作次数。

下面主要针对得益最大的这三个方向的优化进行阐述。

1、内存等参数配置的优化

对于大多数应用来说,最直接、最快速得到优化收益的,肯定属于内存的优化。给每个Oracle内存块分配合理的大小,可以有效的使用数据库。通过观察各种数据库活动在内存里的命中率,执行情况,我们能很快的掌握数据库的主要瓶颈。我们从下面的一条SQL语句的执行

步骤就可知道。

一个SQL语句,从发布到执行,会按顺序经历如下几个步骤:

1)Oracle把该SQL的字符转换成它们的ASCII等效数字码。

2)该ASCII数字码被传送给一个散列算法,生成一个散列值。

3)用户server process查看该散列值是否在shared pool内存块中存在。

若存在:

4)使用shared pool中缓存的版本来执行。

若不存在:

4)检查该语句的语义正确性。

5)执行对象解析(这期间对照数据字典,检查被引用的对象的名称和结构的正确性)。

6)检查数据字典,收集该操作所引用的所有对象的相关统计数据。

7)准备执行计划,从可用的执行计划中选择一个执行计划。(包括对stored outline和materialized view的相关使用的决定)

8)检查数据字典,确定所引用对象的安全性。

9)生成一个编译代码(P-CODE)。

10)执行。

这里,通过内存的合理分配,参数的合理设置,我们主要解决:

1)减少执行到第五步的可能,节约SQL语句解析的时间。第五步以后的执行过程,是一个很消耗资源的操作过程。

2)通过内存配置,尽可能让SQL语句所做的操作和操作的数据都在内存里完成。大家都知道,从内存读取数据的速度,要远远快于从物理硬盘上读数据,一次内存排序要比硬盘排序快很多倍。

3)根据数据库内存活动,减少每个内存块活动的响应时间,充分利用每个内存块,减少内存latch争用发生的次数。

2、减少物理读写的优化

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4