信息系统Oracle数据库性能优化研究

2014-10-21 19:57冯育栋
计算机光盘软件与应用 2014年24期
关键词:Oracle数据库性能优化信息系统

摘 要:随着计算机网络系统快速发展,不断增加的客户端数量对数据库规模提出新要求。从实况来看,应用数据库的响应速度在不断下降,各种性能问题逐渐突出。各种完善措施仅仅是阶段性的,而且成本也比较高,极难提升系统的整体运行效率及性能目标,因此优化数据库系统性能对整个系统正常运行具有重要作用。本文是笔者结合常州市房产地理信息管理系统中日常维护及应用Oracle数据库的相关经验,分析优化提升信息系统Oracle数据库的性能。

关键词:信息系统;Oracle数据库;性能优化

中图分类号:TP392

从我国实况来看信息系统还存在各种不足,比如怎样充分发挥计算机系统资源,怎样确保用户的服务质量及响应速度等。因此,研究优化Oracle数据库的性能具有适用价值。

1 信息系统Oracle数据库性能优化

笔者就从Oracle数据库系统中选择I/O、内存、SQL语句以及网络性能方面入手,分析这些组成部分在运行中性能发送的一些问题,并且针对这些问题提出合理的优化措施。

1.1 对内存进行优化

优化内存比较常用方法就是调整系统的全局区(SGA)。具体操作就是调整内存中各种组件,包含JAVA池、缓冲区高速缓存等,对内存结构进行调整时需要加大SGA大小,但是必须要确保SGAS长度一定在实际所用内存范围之中。

1.2 调整共享池

共享池主要有两个部分组成,即高速缓存和数据字典缓存。其参数就确定了共享池的大小。而在高速缓存模块中又是由SQL语句文本,执行计划以及PL/SQL块、JAVA类共同组成。将“select namespace,gethitratio from v$librarycache”输送到执行栏目中,就能够从数据库中获取到缓存的统计信息。在该执行语句中gethitratio主要是实现查询对象的句柄标识名字和次数之间比率。在该数据库中,如果该比率低于了95%,就要进行调整。其查询语句是“select sum(pins-reloads)/sum(pins)*100 from v$librarycache”,通过执行该局于就可以得到高速缓存命中率。数据字典的缓存就是把数据字典中所含的各种信息存储进去。SQL语句查询对象信息时是通过数据字典进行高速存取,降低了不缓存之时从数据字典中查询的次数,通过这种查询方式就能够提升其性能。而且对v$rowcache动态性能视图进行查询,可以得到数据字典中缓存相关信息,输入执行语句“select(sum(gets-getmisses))/sum(gets) from v$rowcache”,通过执行后就可以得到数据字典中的缓存命中率。一旦最终结果值低于85%,必然要增大共享池容量才可以。

1.3 调整缓冲区的高速缓存

在SGA中,高速缓存是重要的组件之一,在执行保持之时高速缓存区就是负责对磁盘中相关数据进行读取、拷贝,保持服务器就能够对所有拷贝块进行共享。假如该服务器要得到数据块,就会先到高速缓存之中去查询所需数据,如果需要的数据在这个缓冲区之中,那么该进程就可以从高速缓冲区之中直接读取所需数据,如果数据并未在这个高速缓存之中,必然会从磁盘中相关数据文件进行读取,同时还将所读取数据存储进高速缓存之中,之后这些存储的数据就能够被服务器的进程使用。因此要尽可能让进程读取缓冲区的高速缓存中数据,并且经过相关的查询语句就可以执行,还能够通过查询得到使用高速缓存各种情况。

1.4 调整重做日志缓冲区

重做日志的缓冲区,也就要在内存中对高速缓存进行重做。一般情况下,该缓冲区的容量有1MB就可以的。但是该缓冲区一旦占据的空间三分之一,就会发出“rollback”和“commit”的命令,或者将DBWn进程写进到LGWR之中,通过这种方式就可以重做日志的缓冲区,将磁盘中重新写入内容。如果要想恢复数据库,必须要通过重做日志的缓冲区之中各种项目,这一种操作非常重要。要查询重做日志缓冲区中效率,输入相关的查询语句就能够查询结果,最终查询结果值只有接近0才正常,假如这个值不断的增大,就要适当增大log_buffer大小。

1.5 优化I/O

事实上,影响Oracle数据库性能一种主要原因就是磁盘I/O,一旦解决好了I/O,就能够有效提升数据库性能,配置数据库性能准则即为尽可能的降低磁盘I/O及平衡多个磁盘的驱动器,并且还要尽可能使用本地管理的空间,对动态视图进行查询就可以得到数据文件中的I/O 性能。在平衡I/O,能够采用的策略主要有如下几种:

(1)把访问次数比较多的数据文件促进独立的磁盘上。

(2)给用户数据创建出单独的表空间,并且把这个表空间单独放到system表中。

(3)有几个数据文件存在于同样表空间之中,就要存放到不同的磁盘之中。

(4)索引应该处于独立表空间中,还应该把索引以及表的数据存放至不同磁盘之中。

(5)构建出临时的表空间,用来实现排序操作,这样就能够有效阻止数据库中碎片进入表空间中,同时创建独立表空间给回滚段。

(6)尽可能做大日志文件,避免切换日志过于频繁;同时重做日志文件不要和数据库文件放进同一个磁盘中,降低磁盘之间的竞争。

1.6 优化CPU

当数据库中的I/O操作到了最低的程度,同时也分配了足够的内存,但是应用软件依然遭到CPU约束。优化CPU目标就要让CPU尽可能滿足用户所需,同时尽可能减小等待以及额外的开销影响到CPU,并且服务器能不能够正常的工作直接关系着CPU,当工作高峰CPU使用率处于90%标识着服务器具有良好工作状态。但是假如空闲之时CPU的使用率超过了90%,说明服务器中的CPU资源不足。如果出于工作的高峰,CPU的使用率依然比较低,这就说明服务器中的CPU资源比较充足。

在运行中,管理数据库人员只要查询数据字典中相关统计项,就可以查询Oracle 数据库使用CPU所占据时间,同时将相关查询语句输入到执行程序中,就可以获取到该操作系统使用了CPU所占据的时间,当然操作系统使用时间也就是用户态+系统态的时间总和。数据库占据了时间超过了总时间90%,这就说明服务器之中CPU几乎都让Oracle数据库占据了,表明运行良好;如果其他各种程序将CPU资源全部占有,Oracle数据库必然无法活儿更多的CPU资源及时间。查询v$sesstat数据字典就能够知道目前所连接的Oracle 数据库中每一个回话所占用CPU时间,就能够知道会话所占用服务器CPU的时间情况,以及导致CPU资源缺乏根源,事实上重解析SQL语句,锁冲突等均可能造成CPU资源严重不足。管理人员将相关查询语句输入,该语句能够查询解析SQL语句的情况,执行语句中的parse time cpu就表示出系统所用时间,执行语句中的parse time elapsed为响应时间,而用户等待的时间采用公式可获取。而且从该公式之中还能够得到解析SQL语句中平均等待的时间,如果这个平均值靠近0,就表明系统正常,一旦等待解析的平均时间较长,就要从中查询解析效率比较低,应该优化相关的语句,同时还应该改变Oracle中的参数,通过参数来增加高速缓存的光标数值。当然,数据库的管理人员还能够采取查询语言(select buffer_gets, executions, sql_textfrom v$sqlarea),而且该查询语句还能够对低效率的SQL语句进行查询,对该语句进行优化同样能够提升CPU利用效率。

1.7 优化网络性能

数据库的应用不断增加,自然网络这个承载数据库服务器的平台至关重要,直接影响着用户发送数据。因此,调整网络性能也是必然趋势,而优化网络就需要尽可能降低网络中数据流量,从而降低了网络资源的使用。

1.7.1 Oracle 网络协议

Oracle数据库比较常用的网络协议为SQL*Net或者Net 8,该协议处于七层开放式的回话层中,将透明连通性提供给Oracle服务器与客户端。透明连通性就是通过接口层SQL*Net/Net 8接收来自Oracle应用的SQL语句。而且按照相关的标准格式打成包,同时把该包传送至数据库。SQL*Net/Net 8主要是用来负责构建及维护客户和服务器间的网络会话。

1.7.2 检测网络性能的方法。数据通过了网络程序之后必然会出现延迟,因此就需要优化其性能,才能够有效保障网络的吞吐量,才能够降低网络的流量。从使用现状分析可知,要想非常精确的确定出网络的延迟十分困难。但是在Oracle数据库中设计了三个动态性能表,这些表就能够用来测量出网络延迟,这些表分别是v$session_event,v$session_wait与v$sesstat。

(1)v$session_even,该操作主要是操作时Oracle的等待时间,该值就可以多网络效率进行有效评估。

(2)v$session_event;将目前正在运行的会话(等待事件)全部列出来,所谓等待事件就是说明共享或者前台进程中正处于等待的消息。只要存在等待事件,一定要查询等待事件是不是被Oracle接收或者被客户端发送,而且还能够查该表是不是意外被中止,只要客户端发出消息就能够确定出Oracle是否已经作出回应或者依然在等待。

(3)通过v$sesstat查看已经接收或者发送到客户端的字节数,还能够查询到客户端传递过来的请求数目。

2 结束语

笔者依据自身经验,做了如上Oracle数据库相关优化探讨。但是该分析属于一项比较复杂工作,涉及到多个方面,不但要具备扎实数据库技术,还要非常熟悉操作系统、硬件设备以及机器结构等各个方面。笔者全面了解了Oracle体系结构,并且探讨了对该体系结构的优化,包含了优化I/O、优化内存等等,从而更确保了房产信息系统的实时监控。

参考文献:

[1]翟岩龙,宿红毅,战守义.数据库性能监控体系的研究与应用[J].计算机科学,2009(11).

[2]王娜,宿红毅,白琳等.数据库性能监控分析系统的设计与实现[J].计算机工程,2010(24).

[3]滕永昌.Oracle10g数据库管理系统[M].北京:机械工业出版社,2012.

[4]杨华千,刘勇国,杨德刚,廖晓峰.Oracle的存儲体系结构及其对象空间分配研究[J].计算机科学,2013(09).

作者简介:冯育栋(1982.09-),男,江苏靖江人,科员,本科,研究方向:信息系统管理维护。

作者单位:常州市房产登记中心,江苏常州 213003

猜你喜欢
Oracle数据库性能优化信息系统
企业信息系统安全防护
基于区块链的通航维护信息系统研究
信息系统审计中计算机审计的应用
SQL Server数据库性能优化的几点分析
基于SG-I6000的信息系统运检自动化诊断实践