解决软件性能问题的DB2数据库优化方案

2013-12-29 00:00:00马秋慧
电脑知识与技术 2013年4期

摘要:通过应用软件的具体案例,结合DB2数据库的使用经验,该文提出采用数据库技术解决软件性能问题的一些思路、原则和方法等。

关键词:DB2;软件性能;数据库优化;优化方案

中图分类号:F426.21 文献标识码:A 文章编号:1009-3044(2013)04-0671-03

Performance Optimizations of DB2 in Application Software

MA Qiu-hui

(Quality Dept. ,But’one Information Corporation, Xi’an 710043,China)

Abstract: This article gives some ideas, principles and methods to solve software performance issues by the specific case and the DB2 database using experience.

Key words: DB2; performance of software; database optimization; solution of optimization

我公司为某煤炭集团开发了企业运销管理信息系统。系统采用J2EE体系架构JSP+JAVABEAN+SERVLET三层结构实现,运行于WEBSPHERE应用容器之上,使用DB2数据库存储信息。系统功能包括:调拨管理、发运管理、地销管理、结算管理、统计管理、市场运营、系统维护等13个功能模块,覆盖20多个部门日常业务,是一套符合客户其业务流程、切合其自身需要、充分发挥其营销优势、量身定制的信息化系统。系统使用13个月后,随着客户业务量的猛增,软件终端的使用人数从最初的100人迅速增到300人,并仍在继续增加。

软件在上线之前已经通过功能性能测试,并保留有一定的冗余量。上线运行一年以后,用户反映软件运行变慢,打开页面时间过长,性能问题严重影响了业务的正常运行。

1 问题描述

根据通用使用原则,打开页面的吸引分界线是8秒,若在8秒以内显示一个页面可以吸引使用者,让使用者乐于使用。该用户的调运联办和财务两个部门用户反映:以前很快,最近一段时间(近两个月)越来越慢。现场测试验证,最快打开页面一分多钟,打开调运科报表总表花了九分钟。确实已经难以接受,而用户在一天的工作中,“集中”操作行为不会集中发生。

2 软件性能分析

2.1 分析层次

1)硬件的配置:包括网络环境有交换机、路由器等,对硬件配置进行分析,对服务器的内存、CPU等。认为此方面无明显问题。

2)软件系统设计的架构及技术平台:系统架构及平台技术已经既成,可不考虑;

3)WEBSPHERE中间件的设置和优化:

设置容器性能Java虚拟机堆大小(JVM Heap Size)参数, Web容器线程池参数等。

4)数据库优化:

① 控制内存的使用:系统内存使用正常。

② 避免过度消耗CPU:CPU应用在80%以上,较高。

③ 提高磁盘的效率:对硬盘进监测发现大量硬盘碎片。

④ 减少网络开销:状态正常。

5)应用程序

针对问题页面,分析了问题页面的问题,主要涉及存取、更新、查询和系统响应时间。遂对相应的数据表的结构和表现进行分析,发现涉及业务的最大的一张表是300多万条数据,随着系统不断运行,数据量还在不断增长,查询速度明显很慢。

6)SQL语句

分析SQL语言中DML的运用情况,首先查看查询的性能问题,在查询一张表或多张表的联合查询时,应该通过尽可能晚地启动事务的第一个SQL语句,使事务更新尽可能接近提交阶段,从而使事务的持续时间尽可能的短。对问题页面的分析认为个别查询语句还可以再进行优化。

2.2 分析工具

1)通过DB2健康中心的监测,分析系统内存使用情况、数据服务器的资源使用情况、系统最大的业务处理量、内存使用、线程等;未发现系统内存泄露等严重问题。

在 DB2 中有很多和性能优化相关的工具和命令,下面简单地介绍几种:

① SNAPSHOT: 这是 DB2 获取数据库信息快照的一种方法。它能够获取在数据库中关于缓冲池,锁,排序以及 SQL 等等信息。 DBA 可以通过获取这些信息来对数据库中的各组件进行评估来分析问题的瓶颈。

② DB2PD: 这个命令是用来分析数据库的当前状态,它带有很多参数。可以用来分析应用程序,代理,内存块,缓冲池,日志及锁状态等信息。

③ RUNSTATS: 这个命令是用来收集数据库中数据的最新统计信息,并更新到系统表中。更新统计信息将会促使优化器选择更加符合实际的高效的访问计划,从而提高工作效率。

④ REORG: 这个命令用来重新整理数据库中数据和索引的碎片,使其在物理上可以得以按一定规则排列,这样可以加快检索的速度。

⑤ DB2DART: 这个命令是一个数据库的分析和报告工具,它用来检查表空间,索引以及数据库结构的正确性,分析在性能问题上的一些原因。

⑥ DB2SUPPORT: 这个命令用来收集 DB2 和操作系统的所有相关信息并生成一个压缩文件,可传送给优化人员进行分析。

2)使用LoadRouner测试工具,对软件性能指标进行了测量,包括:

① 响应时间:服务器端响应时间,客户端响应时间;

② 吞吐量:也就是软件系统在每单位时间内能处理多少个事务/请求/单位数据等;

③ 资源使用率:CPU占用率、内存使用率、磁盘I/O、网络I/O。

④ 并发用户数:并发数反映了软件系统的并发处理能力,和吞吐量不同的是,它大多是占用套接字、句柄等操作系统资源。

2.3 问题原因归纳

1)业务系统复杂,不正确的逻辑实现导致数据库访问频繁,使用过程中产生大量请求碎片。

2)查询调用的有关业务数据表,数据量很大,但数据表索引不太合理。

3)个别数据表在进行数据结构设计时,对该表的容量没有充分考虑。

3 性能问题解决策略

软件性能需要将软件运行空间和时间综合考虑,所以针对以上具体问题的分析,合理平衡各种矛盾,制定以下系统性能方案。针对原因,制定了数据库性能调优方案。

3.1 优化数据库配置参数

系统刚开始运行时,已经采用DB2快照等解决了某些配置参数的问题,本次运行一段时间之后,考虑调节以下参数:NON_HEAP_SE(DBM)、QUERY_HEAP_SE(DBM)、MAXAPPLS(DB)等参数,具体配置参照有关数据库专业资料。

3.2 利用索引机制优化数据访问策略,对数据库表和索引进行重组优化

遵循表索引建立的的原则,借助于DB2的自动索引建立工具把所有业务模块执行一遍,查出所有SQL语句,然后由DB2系统自动提出索引建议,在此基础上按照个性要求,进行重组优化。

3.3 把大数据表进行分区

对数据库进行分库分区设计,分离当前业务数据和历史数据。建立分区表,把分区表的数据放在不同的表空间,这样避免了无关数据的访问,提供了更好的查询性能,而且,此时,方便数据的转进和转出,去除以往的历史数据,加入新鲜的当前数据。

3.4 物化查询表的建立

对于涉及复杂的大表或计算复杂的SQL语句,而且yQnNu2gTWaE5yeIT1f1EUwjSyul9INNPWcW80Cgs9L0=其中数据不经常更改的表,一天之内不变化,做成物化查询表,它可以极大地提高性能,用这样的表来处理令人头疼的SQL语句。

3.5 调整问题查询对应的业务逻辑,降级对公共数据资源重复频繁查询

通过调整对应业务逻辑,降级对公共数据资源重复频繁查询,明显提高了报表查询性能。

3.6 指导用户做好系统的日常维护

建立规范化的维护制度,敦促客户及时发现问题,处理问题于萌芽状态。

4 改进效果

通过以上几个方面的改进,更新数据库后,效果非常明显,用户非常满意。前后效果比对数据如表1。

[NO.\&Transaction. \&Min. \&Ave. \&Max. \&Bef. \&UP(Bef./Ave.)\&事务\&最小时间\&平均时间\&最长时间\&改进前平均时间\&响应速度提高倍数\&1\&运销铁运业务\装车分配车皮信息\&4.0124\&6.353\&8.451\&180\&32 \&2\&销售财务管理\生成铁路货票汇总表\&0.823\&31.231\&106.36\&1200\&38 \&3\&调运计划管理\查询日请车计划\&2.308\&3.455\&4.601\&420\&122 \&4\&调运计划管理\查询月度计划\&1.795\&2.517\&3.203\&420\&167 \&5\&运销铁运业务\查询铁运值班记录\&0.769\&1.052\&1.602\&330\&314 \&6\&调运科报表\站运销日报\&51.817\&89.035\&105.82\&540\&6 \&]

5 结束语

针对DB2软件系统性能优化问题,文中结合具体案例,从性能问题分析层次、分析工具、总结归纳,提出数据库参数调整、利用索引机制、数据表分区等数据库优化的思路、原则和方法,有效提高了软件系统的响应时间等性能,极大地提高用户满意度。

参考文献:

[1] 杨鑫华,丁传华,赵慧敏.数据库原理与DB2应用教程[M].北京:清华大学出版社,2007.

[2] 王飞鹏.DB2设计与性能优化:原理、方法与实践[M].北京:电子工业出版社,2011.

[3] 牛新庄.DB2数据库性能调整和优化[M].北京:清华大学出版社,2009.

[4] 朱延梅,邵远山.基于DB2数据库应用系统的性能优化方法[J].阜阳师范学院学报:自然科学版,2006 ,23(2).