数据库应用系统性能优化研究与实践

(整期优先)网络出版时间:2018-05-15
/ 2

数据库应用系统性能优化研究与实践

武杰

天津城市建设管理职业技术学院天津300134

【摘要】随着数据库应用系统规模的增大,业务数据积累的增多和处理业务复杂程度的增加,对数据库应用系统的设计开发和管理程度相对来说处于低下水平,导致应用系统性能问题时常出现。本文针对目前数据库系统中常见的性能问题,通过SQL语句优化、调整服务器分配、利用数据库分区和并行技术和对软件测试的优化等方式来促进对数据库应用系统性能的优化。

【关键词】数据库应用系统;性能;优化;策略

1.数据库系统性能的评价标准

数据库系统性能的评价标准主要有几个方面:(1)系统的吞吐量:吞吐量是指数据库在单位时间内完成的SQL的语句数量,如果把系统的数据处理量提高也可以同时提高数据库对数据处理的速度,在同样的资源环境下利用较少的时间做更多的工作。其计算方法用单位时间的事物量(tps)来表示。(2)用户的相应时间。用户提交SQL语句后,到获得结果集的第一行需要的时间,即应用做出反应的时间,单位时间为毫秒或秒。响应时间包括系统的服务时间和用户的等待时间。因而,可以通过提高数据库的吞吐量来减少系统的服务时间,另外,若要减少用户的等待时间,可以减少用户访问统一数据库资源的冲突率。(3)数据库的命中率。用户所需要的数据全部都是通过缓冲区告诉缓存来存取的。也就是说,衡量用户是否能在内存中对数据量的需求得到满足的标准是缓冲区的告诉缓存命中率。其计算公式是告诉缓存命中总数除以对告诉缓存的查找总数[1]。(4)内存的使用状况。一般内存的使用状况体现在共享内存、永久性内存和运行时候的内存三者的分配使用上。一般对内存使用的调整我们倾向于考虑把精力和时间用于解决可能产生最大利益的问题上,在使用见到最小的基础上已得到投资的最大回报。(5)磁盘I/0。这是衡量数据库性能方面较为重要的一个指标,由于数据库对每一个数据的处理都要经过I/0这样的活动来进行,而种种活动既可以在内存中也可以在磁盘上运行,我们可以通过减少一些没必要的I/0活动内容,从而增加用户获得的吞吐量,缩短用户的响应时间。

2.数据库应用系统性能存在的问题

2.1数据的连接方面

B/S连接方式相对于传统的C/S连接方式来说,虽然在一定程度上缓解了资源连接的压力,但是缺乏数据库连接池的管理,用户数量的增加和应用服务器的扩大会导致连接的数量无法受到控制而不断上升。

2.2系统应用方式方面

数据库中业务流程处理缺乏合理的应用结构设计,单纯的数据关系很难承载多元的业务应用需求,在实际的业务系统中,业务流程在不断增加,现有数据库的分析统计和决策支持并不能满足实际的业务需要。

2.3数据库设计方面

数据库的设计仅仅能应对简单的数据存储,但是用户数量在不断增加,原有的数据库整体分析和性能设计并不能满足日益剧增的用户量的需求,因而,系统性能会随之下降。

2.4数据库管理方面

数据库一定开发由于其本身管理员的能力有限而存在着许多不足,随着系统的不断增大,其系统的硬件配备和系统软件两方面有着先天不足,而且在管理维护中缺乏相应的成熟技术,因而提高数据库管理员数据库硬件软件研究水平也非常重要。

3.优化数据库性能的措施与策略

3.1SQL语句优化

数据库对SQL语句的执行速度快慢也决定着应用程序的执行速度快慢,因此,我们应该对SQL语句进行适当调整,就能提高数据库系统的性能。SQL语句优化就是利用索引来减少表扫描的I/0次数,以避免表搜索的发生,其原理是将性能较为低下的SQL语句转换为性能相对优异的,但是目的相同的SQL语句,将数据查找的路径简单化[2]。

3.2数据库服务器的内存分配的调整

服务器内部参数调整极为复杂,对系统影响较大的参数一般包括共享池(Sharedpool),数据缓冲区(DatabaseBufferCache),日志缓冲区(Redologbuffer)等。

数据库缓冲区(DatabaseBufferCache)是把从磁盘中读取的数据块存放于内存缓存中,因而,如果数据库的缓冲区大,其储存的数据也会相应的加大,这样的话,磁盘读取数据操作所花的时间就会减少,因此间接地使得系统的运行效率得到提高。我们可以利用数据字典来得知数据缓冲区的活动状况,如果命中率小于0.85的话,就可以为数据块缓冲区分配更多内存。

共享池(Sharedpool)包括两个部分,即数据字典缓冲区和库告诉缓存区,它的作用是储存用户最近使用的一些语句,并且利用有效的方式对其进行管理。因而,共享池大小是否合适体现在两者的命中率上面。库缓冲区的设置应该适度,不能太大,也不可太小,如果设置太大的话会提高CPU的使用率,而如果设置太小会使语句源源不断地被装入而影响系统的性能。

日志缓冲区(Redologbuffer)若是分配小就缺乏足够的空间来重做条目而需要进行等待,通过输入Selectname,valuefromv$sysstatwherename=’redologspacerequests’进行查询,查询结果应该接近零,若非如此的话,每次把Log-buffers增大5%来输入上面的语句进行查询,一直到最后结果接近零为止。

3.3利用数据库分区和并行技术

我们可以将数据库运行的各项操作进行分解,对操作的记录数进行严格控制,或者将几项操作同时进行,这样可以提高数据库应用系统的执行率,从而优化其性能。使用数据库的分区技术是一个很好的办法,它可以使得数据库查询的速度更为快捷,有效,而且增加了数据库的可用性。在进行查询的初期,优化器就可以将所需查询数据的所在区辨识和识别出来,从而未包含所需查询数据的分区可以避免读取数据,从而减少查询的时间,提高其查询效率[3]。而且,数据库分区后,可以把使用频率不同的表建立在不同的设备上,合理高效地分布表空间。另外,除了数据库分区,几乎所有的Oracle数据库的操作都支持并行技术的,包括了查询、数据的加载和插入等。并行指的是几个处理器同时投入一条命令的运行处理工作中,所以,用户在创建数据对象的时候,可以设定并行参数使得数据库系统性能得以提升。这样做的好处是系统的运行效率得到了提高,特别是大数据量的访问支持情况较好,但是由于数据库分区需要对数据表的增长趋势进行独立分析,因而需要大量的硬件资源和专业的数据库管理知识,要求十分高,这从一定程度上降低了其可行性。

4.结束语

数据库由于越来越多的在各个领域得到广泛应用,对其系统的研发和管理技术已经难以满足于日益增加的业务数据和日渐繁复的业务处理,因而对于数据库的性能优化迫在眉睫,有待于我们不断地深入研究和探索合理的方法提升数据库性能。笔者根据实践讨论了通过SQL语句优化、调整服务器分配、利用数据库分区和并行技术和对软件测试的优化等方式对系统数据进行性能优化,除此之外,通过更多的相关人员的不懈努力和积极探寻,必然能找到更多新的提高数据性能办法。

【参考文献】

[1]刘乃嘉,高国柱,冯珂.Oracle用户故障快速恢复方法研究[J].教育信息化,2009(增刊):506-509.

[2]王健.Oracle数据库的备份与恢复策略研究[J].现代情报,2009(4):158-160.

[3]韩竞锋.数据库应用系统性能优化研究与实践[J].技术探讨,2011,(6):35-37.