择了上述软硬环境的前提下J2EE信息系统的性能特点.现实情况反映出,在此前提下系统的响应速度很大程度上取决于对数据库的访问速度,数据访问是影响系统性能的主要因素之一.信息系统的生命周期可以分成设计、开发和成品3个阶段.在设计阶段进行数据库性能优化的成本最低,收益最大.根据统计,对
网络、硬件、操作系统、数据库参数进行优化所获得的性能提升,全部加起来只占数据库系统性能提升的40%左右,其余的60系统性能提升来自对应用程序%[1]的优化.应用程序的优化通常可分为2个方面:源代码和SQL语句.由于涉及到对程序逻辑的改变,若在成品阶段对源代码的优化在时间成本和风险上代价很高,而对信息系统性能的提升收效有限.SQL语句独立于程序设计逻辑,对SQL语句进行优化则易于实现.因此,本文着重在系统的设计和开发阶段,从数据访问层设计及SQL优化2方面优化数据访问性能,最终达到提高系统整体性能的目的.
具,处理开发阶段的数据访问性能监视和调测的问题.
3
J2EE系统数据访问性能优化
本文主要以一个现实的J2EE信息
管理系统项目为背景,针对J2EE信息系统性能的特点做如下数据访问层设计及性能优化的应用研究
工作:1)数据访问层框架搭建.数据库连接池、持久层解决方案是提高数据访问效率的重要手段.目前已经有很多成熟的连接池产品及兼顾了开发[2]效率和性能问题的持久层解决方案,因此本文的数据访问层框架将在这些成熟方案的基础上,从对工程项目具体实施过程中提高开发效率和数据访问效率的角度进行设计和搭建.主要是实现以下3方面具体功能:①从提高开发效率的角度为项目提供安全、易用、统一的数据库操作方法;②为信息系统中
常用功能提供大数据量处理的专门方法;③支持SQL与源代码彻底分离,易于进行对应用中的SQL调优.2)利用AOP技术实现一个数据访问监测工具.从AOP的角度看,本文第2节提到的J2EE信息系统性能监视调测存在的问题都是因为关注点的横切引起的,而AOP立足于关注点的分离,它能够支持组件(类)的分离,提供了一种从组件中分离出aspect的方式
[3]
,这种方式能够很好地解
决该问题.该工具实现以下几方面功能:①监视J2EE信息系统Web请求和响应操作,且被监视系统不需要做任何源代码修改以提供监视接口;②监视并统计应用程序对数据库访问操作情况.3)SQL语句性能调优.SQL语句是对数据库进行操作的唯一途径,SQL语句消耗了70~%90的数据库资源;相同功能不同写法的SQL语%句在性能上的差异非常大
[4]
2开发阶段性能调测存在的问题
在开发阶段对信息系统数据访问性能的监测及调优,通常需要记录数据访问操作的执行情况.传统数据访问设计方法是:为数据访问操作代码提供有关方法,记录使用情况、计时以及错误情况.但是,这种方式要求在许多地方分散重复的代码,而且要测量哪些代码也需要经过许多实验和错误才能确定.当系统发生变化涉及到代码修改时,这种方式下的性能监视代码也要随之修改,这是很难维护的.一些功能强大的第三方测试工具如loadRunner能够全面的解决性能监测问题,但是这些工具通常使用复杂且价格昂贵.而Profiler这种开源的性能监测工具本身需要一定的系统开销,会对监测结果造成不利的影响.因此,本文将从简单实用的角度出发,利用AOP技术设计实现一个小工
.因此,SQL语句的调
优对系统的数据访问性能优化可以起到相当重要的作用.总结一些常用的SQL性能调优知识,根据这些常用知识、性能瓶颈挖掘工具得出的数据库访问情况及项目具体情况进行SQL语句性能调优.
4设计方案与技术路线
图1所示即为本文实施的J2EE信息系统数据库访问调优过程.本文设计的总体方案:在数据访问层框架同时支持通过O/RMapping自动生成SQL语句和从配置文件中读取被调用SQL语句2
1206
北京航空航天大学学报
2007年
种方式,并且提供这2种方式的切换功能;利用AOP技术实现数据库操作情况监视,帮助开发人员进行数据访问性能调测;对造成性能瓶颈的SQL语句切换为从配置文件中读取SQL的方式,对该调优,写入配置文件中,最终达到提高系统性能的目的.
图1系统优化过程<