Oracle数据库应用系统的性能优化

2019-03-19 13:57贾艳芳任利锋
产业与科技论坛 2019年4期
关键词:数据库系统缓冲区语句

□宋 萍 贾艳芳 董 晨 任利锋

一、数据库性能评价指标分析

在实际的应用和开发过程中,数据库性能通常受资源、并发活动、服务器等因素影响。其中吞吐量、响应时间、命中率、内存使用情况、磁盘I/O量是Oracle数据库性能评价的一些主要评价指标。

(一)系统吞吐量。数据库中的吞吐量直接影响到了用户请求的执行时间,这个吞吐量是SQL语句的数量除以执行时所用时间得到的,因此吞吐量越小,表明系统在一定时间内执行结束的SQL语句越少,造成资源浪费。反之系统资源可以得到充分利用。可以通过用最少的时间完成更多的任务量或者减少总的用户响应时间,从而减少总时间两种办法来增加数据库系统的吞吐量。

(二)用户响应时间。数据库响应时间受许多方面的影响,分析SQL语句的响应时间,需要根据不同的应用环境与具体情况进行分析。可以通过减少等待时间和增加吞吐量从而实现提高性能或者通过减少用户访问同一数据库造成冲突率。

(三)数据库命中率。数据通过高速缓冲区进行存取,所以数据命中率直接影响了数据库的性能。这个命中率是命中数/(命中数+没有命中数)。数据库命中率并非越大越好,有较高的水平并不能代表有良好的性质与效用。

(四)内存使用情况。合理的使用内存可以影响数据库性能,如果可使用内存多,可有效提高数据库的性能,减少或者消除瓶颈的产生。

(五)所需磁盘的I/O量。如果数据很分散,也会影响数据的查询时间,从而导致用户响应时间过长。降低用户响应时所需的时间,也有效提高了用户任务的数量并且可以通过降低I/O开销从而实现增加用户任务所需要的吞吐量。

二、影响数据库性能的因素

想要优化数据库的响应效率,就要先知道可以被优化的因素,影响数据库效率的因素主要有以下几点。

(一)硬件能力。硬件能力主要包括CPU、内存、输入输出和网络因素。其中Oracle数据库是一个多用户的数据库,对CPU性能要求更高,CPU的能力相对于其他因素起着主要作用,CPU的配置和处理能力直接影响了数据库性能,导致CPU占用率过高的因素有很多,查询语句的高并发是主要原因之一,这一点可以通过优化SQL语句或者调整CPU参数来解决。内存也是影响原因之一,内存越大,I/O响应时间越短。其中网络I/O也是数据库性能中的重要影响因素之一。

(二)系统环境。Oracle数据库非常依赖于操作系统,系统环境主要是指数据库的参数配置,如果系统环境配置不合理会影响数据库性能,不恰当的参数配置可能会导致磁盘竞争、启动时out of memory报错等问题,严重影响数据库系统的效率。配置参数主要由内存分配、I/O设置、回滚设置等组成。

(三)数据库内部因素。主要是指索引、阻塞、等待、隐式转换、参数嗅探和统计信息等因素索引在磁盘上占用空间,并且减慢插入、删除和更新的速度,降低执行效率。所以给不常用的数据表建立索引不仅不能提高数据表的查询效率,相反,会增加系统负担以及维护成本。

(四)系统规模。并发量和数据量是指同一时间段内由于用户访问量过高而影响数据库正常使用的情况,而解决并发问题可以通过分表、分流、横向扩展等方法。

三、Oracle数据库优化技术与手段

随着当今对于数据库系统的需求日益增高,对数据库性能的要求也日益苛刻,从而要求从各个角度优化数据库系统的性能,而影响数据库系统效率的主要因素大致可分为三方面:一是CPU利用率方面,二是内存分配方向,三是SQL语句的优化方向。

(一)对于CPU利用率的优化。要想提高数据库效率,对CPU的利用率的提高是必不可少的,CPU的使用状态会对Oracle数据库的总体响应时间产生极为重要的影响,从而影响数据库的执行效率。CPU总需要运行的时间包括两个方面,分别是CPU操作对于用户来说响应的时间即os user level cpu time以及CPU对于系统操作进行响应的时间即os system call cpu time。通过研究可以发现,导致CPU资源利用率相对较低的原因较多,其中起着主要因素的一个原因是SQL语句较低的效率问题。开始需要知道的一点是,在对Oracle数据库系统与之对应的应用程序进行统一调配的过程中,Oracle数据库系统的CPU使用时间如果能够达到CPU90%的全部使用时间或更多,那么就代表着Oracle数据库系统与之对应的应用程序处于相对正常的执行状态,star-u指令可以查看CPU当前的使用效率,主要作用就是对CPU作相应的运行记录,当前需要注意的是,系统响应时间减去服务时间就是用户等待时间的计算方式。

(二)对于内存分配的优化。Oracle的内存可以按照共享和私有的角度分为SGA和PGA(process global area or private global area),对内存的优化也主要从这两方面着手,优化SGA可以通过调整其中的数据库组件参数来达到提高系统响应效率的目的,其中对于参数Pre_page_sga的调整显得尤为重要,该参数可以将整个SGA加载到物理内存中,从而有效提高系统执行效率。而PGA(Process Global Area)是为每个连接到Oracle database的用户进程保留的内存。而上述两种内存结构又包括很多方面,主要讨论以下三方面的分析和调优。

1.对于共享池的优化。可以对SHARE_POOL_SIZE根据实际需要每个节点进行自定义调整,安置共享池的主要作用就是对于之前查询过的LQS进行保存,从而提高二次查询的相应速度,相应的,如果共享池容量过小,过多语言的载入就会影响系统的性能,反之,如果共享池容量过大,连仅执行一次的语句也要缓存,会造成不必要的浪费。

2.对缓冲区高速缓存的优化。调整数据缓冲区的容量大小有助于减少系统磁盘的I/O开销,所以应对高速缓冲区进行优化,尽可能减小用户请求响应时间,优化日志缓冲区之前,要了解日志缓冲区的运行情况,通过查询结果来计算缓冲区的申请失败率,了解了运行情况之后可以通过提高init.ora中的log_buffer的值来提高响应速度。

3.对日志缓冲区的优化。对于每个dml或ddl语句,Oracle服务器进程复制到重做日志缓冲区上,重做条目包含一些信息,用于重做或重构dml或ddl操作,用于占据日志缓冲区的连续的有序空间,并恢复数据库,可以有效优化日志缓冲区。

(三)对于SQL语句的优化。对SQL语句的本质进行判断,是优化SQL语句的前提,优化SQL语句有利于降低I/O请求,降低网络占用率,可以从根本上提高数据库效率。建立索引是一种良好的优化SQL语句的方案,通常,索引被建立在经常访问的数据表中的主键上,使用索引查找要比全表扫描速度要快,所以应尽量减少全盘扫描的操作,在联结多个表时也可以使用索引提高效率,通常在大型表中索引可以极大优化相应速度,但是索引需要定期维护,不恰当的索引会使响应速度变慢,有必要对索引进行定期重构。

四、结语

对Oracle数据库所对应应用系统的性能进行调整和优化需要结合相应的硬件环境,它贯穿在整个数据库系统研发进程中,提升Oracle数据库应用系统性能,保证业务处理稳定性始终是优化数据库性能的主要目标,而上述三方面的优化途径可以有效提高数据库响应速度,从而提高系统性能。

猜你喜欢
数据库系统缓冲区语句
重点:语句衔接
基于网络聚类与自适应概率的数据库缓冲区替换*
微细铣削工艺数据库系统设计与开发
江苏省ETC数据库系统改造升级方案探讨
实时数据库系统数据安全采集方案
一类装配支线缓冲区配置的两阶段求解方法研究
核反应堆材料数据库系统及其应用
关键链技术缓冲区的确定方法研究
初涉缓冲区
如何搞定语句衔接题