APP下载

基于Oracle数据库系统的优化与性能调整研究

2012-05-09刘哲

绿色科技 2012年5期
关键词:缓冲区磁盘语句

刘哲

(武汉纺织大学,湖北 武汉430200)

1 引言

大型关系数据库Oracle已经广泛应用于各行各业,如政府、交通、公安、电信、金融、能源等部门,并已逐渐成为企业信息化建设的重要数据库平台,但随着Oracle数据库规模的扩大,数据库用户人数的增加,数据库性能问题越来越突出。因此,有必要对Oracle数据库性能进行调整与优化,使之在满足需求条件下,系统性能达到最佳和系统开销最小。

2 性能优化目标

2.1 提高系统吞吐量

数据库吞吐量指在单位时间内数据库所能完成的SQL语句事务数量,吞吐量=事务量/时间,通常用TPS(每秒钟的事务量)来表示。对某些特定的系统而言,系统调整最终要的目的可能就是对系统吞吐量的调整。

2.2 缩短响应时间

响应时间是指从用户提交SQL语句到数据库返回结果集的第一行数据所需要的时间,缩短响应时间可以通过减小系统服务时间或用户等待时间来实现,通过使用ms来表示,通过缩短响应时间,既能减少用户请求的处理时间,又能提高系统资源利用率。

2.3 优化磁盘I/O

Oracle数据库将数据储存在磁盘和内存中,想要往Oracle中写入和读取数据基本上都会涉及到I/O操作,通过对磁盘合理的进行规划,利用高速缓存技术,可以提高系统吞吐量,缩短用户响应时间,尽可能有效地利用系统物理内存而尽量避免或推迟使用磁盘I/O操作。

2.4 提高数据库多个指标的命中率

Oracle用户进程所需的所有数据都是经过缓冲区高速缓存来存取的。用户对数据的需求能否在内存中得到满足,给出快速的响应,可用缓冲区高速缓存命中率来衡量。

2.5 合理使用内存

在大量并发用户数下,若Oracle内存尺寸不够会降低程序的处理效率,延缓数据库的响应时间,内存是否合理使用,一般可以从使投资得到最大回报和使争用减到最小这两个指标来判断,通过合理使用内存,可以大大提高系统性能。

2.6 减小磁盘排序

当用户提交的SQL语句含有聚合函数或者有排序时,这些排序可能在内存中进行,也可能在物理磁盘上进行。由于物理磁盘自身结构的原因,其读写速度远远慢于内存读写,因此一个优化的原则是尽可能减少物理磁盘排序操作。

3 影响Oracle性能的因素

影响Oracle数据性能的因素有很多,如操作系统,CPU性能,内存分配不合理,Oracle配置,I/O冲突,网络速度低以及SQL使用常见错误等都会影响数据库的性能。

(1)操作系统。Oracle数据库服务器很大程度上依赖于运行服务器的操作系统,操作系统配置不合理会直接降低Oracle性能。

(2)CPU占用过高。CPU是服务器中一个重要的资源,CPU资源被其它应用占用或被某个数据库事务占用,会导致其它数据库事务运行停滞,而使数据库响应迟钝,比如:空闲时,CPU占用率超过90%,则说明Oracle服务器CPU资源不足,低效率的SQL语句、锁冲突、SQL语句的重解析等原因都会引起CPU资源不足。

(3)I/O冲突。由于磁盘在同一时刻只能满足一个进程的需要,当多个进程同时访问同一个磁盘时,会引起读写盘冲突,进而降低整个系统的速度。

(4)Oracle配置。每一个Oracle实例都是由一组Oracle后台进程和系统全局区的一个内存区所组成的,正确调整Oracle配置将会对系统性能产生重大的影响。

(5)内存分配不合理。多数操作系统使用虚拟内存来扩大内存,它实际上属于磁盘空间。当实际的内存空间不能满足应用软件的要求时,操作系统就将这部分的磁盘空间与内存中的信息进行页面替换,这将引起大量的磁盘I/O操作,使整个服务器的性能下降。调整操作系统的主要目的就是减少内存交换,减少分页,使SGA留驻内存。

(6)网络速度低。网络的带宽会在一定程度上影响系统的整体性能,网络速度过低会增加网络如负荷量,从而降低数据库系统的吞吐量并延长用户响应时间。

(7)SQL使用常见错误。配置和数据迁移的错误,大量递归SQL语句的存在,长时间的全表扫描,一些数据库结构的设置不合理,重做日志文件的不合理设置I/O设备的不合理的规划,非标准参数的使用,执行效率很差的SQL语句,游标和共享池的错误使用。

4 性能优化与调整技术

4.1 调整优化数据库

要在良好的Oracle方案中实现最优的性能,最关键的是要有一个很好的数据库设计方案。这一部分应在开发信息系统之前完成。尽管Oracle系统本身己经提供了若干种对系统性能进行调节的技术,但是,如果数据库设计本身就有问题特别是结构设计,那么再怎么对数据库进行调整和优化都达不到很好的效果。因此提高数据库应用系统的性能首先应从数据库设计开始。

数据库设计分为逻辑设计和物理设计。逻辑设计包括使用数据库组件为业务需求和数据建模,而无须考虑如何或在哪里物理存储这些数据。物理设计包括将逻辑设计映射到物理媒体上、利用可用的硬件和软件功能尽可能快地对数据进行物理访问和维护,包括索引技术。逻辑设计主要是消除冗余数据,提高数据的吞吐速度,保证数据的完整性,但对于多表之间关联查询(尤其是大数据表),将会影响其性能。因此,在物理设计时需要折衷考虑,根据业务规则和关联表的数据量大小、数据项访问频度,对关联查询频繁的数据表适当提高数据冗余设计。

4.2 调整优化内存

Oracle的信息存储在内存和磁盘上,由于访问内存比访问磁盘快得多,在大量并发用户数下,如果Oracle内存尺寸不够会降低程序的处理效率,延缓数据库的响应时间,提高数据库性能需要设置合适的内存尺寸,Oracle内存包括系统全局区(SGA)和程序全局(PGA)。

4.2.1 调整SGA的大小

根据数据库运行状况重新调整SGA的大小,对每个节点修改SGA大小的方法如下:

SQL>alter system set sga_target=300mscope=both sid='***'。

4.2.2 提高共享池性能

共享池主要是用来存放最近使用过的SQL语句,共享池内存分配算法保证了数据字典数据比库缓冲区数据在内存停留时间更长,命中率更高,应优先调整库缓冲区。

通过调整参数SHARED POOL SIZE的值,可以根据实际情况对每个节点共享池的大小进行调整;为了提高共享池命中率,可以使用代码重用方法;对于比较大的对象,如自定义的过程与包,在载人共享池以及硬解析的过程中需要共享池付出很大的代价,把重要的大对象保持在内存中,可以大大提高共享池性能。

4.2.3 优化数据缓冲区高速缓存性能

为减少系统磁盘I/O开销,应调整数据缓冲区的尺寸,使服务器进程尽量在缓冲区中找到所需的数据,尽量减少等待数据块或空闲缓冲区的时间。加大Buffer Cache的大小,可以通过调整DB_ACHE_SIZE参数的值增大Buffer Cache。使用多个缓冲池,Keep池中数据倾向于一直保存,Recycle池中的数据倾向于即时老化,而Default池则存放未指定存储池的数据,通过使用多个缓冲池提高Buffer Cache的命中率。

4.3 调整优化磁盘I/O

数据库的数据最终要存储在物理磁盘上。磁盘I/O操作是数据库性能最重要的方面,它是系统消耗最大的Oracle数据库操作。为了避免与I/O相关的性能瓶颈,监控磁盘I/O并对其进行调整非常重要。影响磁盘UO的性能的主要原因有磁盘竞争、I/O次数过多和数据块空间的分配管理。

4.4 SQL优化

SQL语句优化的实质就是在结果正确的前提下,用优化器可以识别的语句,充分利用索引来减少表扫描的I/O次数,尽量避免表搜索的发生.优化的目的就是将性能低下的SQL语句转换成目的相同的、性能优异的SQL语句,使数据查找的路径最简化,并尽量保持处理器时间和I/O时间的平衡。

尽量减少对数据库的查询次数,对几个表查询时FROM子句的顺序,按照由内及外的访问顺序应把可筛选出较少记录的表放在前面,执行时最先查找出这个表的几个记录,再和其他表的记录相连接;为了充分利用库缓冲区的SQL解析信息,对于经常运行条件子句变量值不同的SQL语句,应将这些变量改为统一的绑定变量;避免不带任何where条件的SQL语句的执行,使用order by,group by,union等条件的SQL语句会对查询完的数据进行排序,增大了PGA或TEMP的负担,优化这些语句时可在使用这些条件的列上加上有序索引;对SQL语句的索引进行优化,索引的目的是提高数据访问速度,Oracle的索引都是独立于与之相关的表或簇中的数据的。如果对索引进行良好的配置和优化,则可以大大降低数据库中数据文件的I/O操作并提高系统性能和响应速度。

4.5 数据库优化实验

选取约为4G左右的东风日产管理系统作为数据库优化实例,该数据库运行在HP DL380G7 583917-B21服务器上,使用Linux操作系统,优化结果如图1。从图1可以看出,数据库经过调整优化数据库、调整与优化内存、调整与优化I/O和SQL优化后,响应时间变得越来越短,系统性能得到逐步提高。

图1 性能调优

5 结语

随着Oracle数据库规模的扩大,用户数量的增加,Oracle数据库性能问题越来越突出,Oracle数据库的性能优化涉及的方面很广,优化与调整是一个需要通过不断摸索、总结的过程,在实践中,必须先了解影响数据库系统性能的因素,针对这些不同的因素选择合理的优化调整策略予以调整,同时也需要采取更加先进的技术来对数据库进行调优,使得数据库系统获得最优性能。

[1]盖国强.循序渐进Oracle数据库管理、优化与备份恢复[M].北京:人民邮电出版社,2007.

[2]赵梦勤,李秀兰.ORACLE数据库应用系统的优化策略[J].计算机工程与应用.2003(27):217~218.

[3]潘 敏.Oracle数据库性能优化的分析[J].电脑编程技巧与维护,2010(20):21~22.

[4]韩云波.Oracle性能调整技术研究[J].电脑知识与技术,2010(7):65~66.

猜你喜欢

缓冲区磁盘语句
它的好 它的坏 详解动态磁盘
创建虚拟机磁盘方式的选择
解决Windows磁盘签名冲突
串行连续生产线的可用度与缓冲库存控制研究*
基于ARC的闪存数据库缓冲区算法①
Windows系统下动态磁盘卷的分析与研究
初涉缓冲区
我喜欢
冠词缺失与中介语句法损伤研究
本期导读