首页 > 范文大全 > 正文

论软件性能优化――以高速公路建设项目管理系统为例

开篇:润墨网以专业的文秘视角,为您筛选了一篇论软件性能优化――以高速公路建设项目管理系统为例范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:高速公路建设项目管理系统是我们承担开发的一个综合型的软件系统。为提高系统性能,我们通过优化数据库的表设计、索引设计及与其相关的硬件系统来提高SQL Server性能;通过将WEB服务器与其他服务器相分离、改变日志存放地点、增加IIS高速缓存容量等措施来提高WEB服务器性能;通过合理选择SqlDataRead和DataSet类、合理使用Application或Session对象等措施来提高应用程序性能,取得了很好的效果。

关键词:SQL;WEB;;软件性能优化

中图分类号:TP311 文献标识码:A文章编号:1009-3044(2007)04-10910-02

1 引言

高速公路建设项目管理系统是一个为满足业主对公路项目建设管理的具体业务流程要求,并以业主为中心辅助其进行公路建设项目管理的综合软件系统。

系统涉及公路工程项目建设的全过程管理以及相应的文档管理,内容包括工程进度、建设费用、各方协调、合同管理等,可处理公路建设中立项、初设、施工图设计、招投标管理、合同变更、计量支付、数据汇总、审批签字、报表打印、各项查询、竣工资料管理、预决算等一系列业务,方便、高效地实现了公路建设管理的一体化应用。

系统需跨越用户单位的局域网及其以外互联网两个区域,以达到各部门、各参建单位之间协同工作、统一管理、集中处理之目的。为此,系统采用目前流行的B/S、C/S混合结构。整体系统分为前台和后台系统两大部分,前台系统是整个软件系统的主体,也是实现用户功能、完成用户业务处理、达成用户业务目标的部分,这部分采用B/S结构,可让受权用户通过Internet/Intranet进入系统,完成其权限范围内的工作任务。后台系统是辅助支撑系统,为整个系统的正常运行进行基本参数与设置项配置,是系统管理员对整个软件系统进行控制与设置的部分,这部分系统采用C/S结构,在业主单位局域网内运行。

系统WEB服务器配置为IIS6.0、 Framework 1.1、运行于MS Windows 2003 Server平台之上,数据库采用MS SQL Server 2000,客户机要求安装IE5.5以上版本浏览器、MS Office 2000(Word、Excel)办公系统,部分还要求安装AutoCAD软件。

项目的时间要求紧,而业主要求在查询与文档存储、查阅操作时有较好的响应性能。为了高质、高效地完成任务,在项目开始之初,我们就特别注重软件性能的优化问题,高性能是软件高质量的重要体现,也是用户满意度提高的重要软件特征,为了提高软件的性能,我们对系统作以下优化处理。

2 SQL Server性能优化

作为应用系统的一部分,SQL Server具有举足轻重的地位,数据库的优化对系统意义重大,数据查询及速度已成为衡量应用系统成败的标准。在这次开发中,我们从以下三个方面着手以优化SQL Server性能:

2.1 数据库表的设计优化

数据库的逻辑设计、表与表之间的关系是优化关系型数据库性能的核心。首先是逻辑库的规范化问题。项目要求所有关系模式都必须满足第3范式,这是最基本的要求,这消除了数据库数据的插入、修改、删除异常和数据冗余。其次,由于系统在文档管理中需保存Word、Excel和AutoCAD文档,在文档表WD中将存放文档的Text字段分离出来,单独建立一个WD_C表,两表之间用主键文档编号相关联。这样设计的目的是在对文档进行检索处理时,可以减小网络流量,减少查询响应时间。只有在用户真正要查看文档内容时再从数据库读取内容信息。第三,在生成物理数据库时,我们把含有Text字段的数据库存放在一个单独的物理硬盘上,以提高磁盘I/O的性能。

2.2 索引设计优化

索引能大大提高select、insert、update、delete语句的性能,但也不是越多越好。索引列值的频繁变化将使多索引表的性能大受影响。在对数据表建立索引之前,我们对用户的查询模式作了仔细的研究,按照查询使用频度,找出了9项用户使用频繁的列,然后在其所在表中按该列建立索引,一个数据表最多不超过2个索引,大多数只包含一个索引。这种基于使用频度而建立的索引,大大提高了带where、order by、having子句的SQL语句的执行效率,同时又合理地控制了改变索引项列值给数据表所带来的性能影响。

2.3与SQL Server相关的硬件系统优化

与SQL Server有关的硬件包括系统处理器、内存、磁盘子系统和网络,在系统中服务器CPU采用Intel PⅣ 1.8G芯片,片内包含256K Cache,内存从原来的256M扩到1024M,磁盘子系统使用4只SCSI 40G硬盘两两镜像而成,采用SCSI接口的磁盘其I/O性能大大优于IDE接口,磁盘镜像虽然多花了一只冗余盘的成本,但它大大提高了数据的安全性,同时也改变了磁盘读数时的性能(因为它可以在两只镜像盘中并发读取数据)。从目前市场看,大容量硬盘价格也越来越便宜,多花一只冗余盘的代价还是值得的。对于网络部分的优化主要是匹配网卡与交换机的工作模式与速率。目前许多自适应网卡和交换机,按照原理应能正确适应速率和双工模式,但实际上往往不能自动实现匹配双工模式,必须人工设置。

3 Web服务器性能优化

作为一个站点来说,需要运用最少的带宽和服务器资源,为更多的客户提供更快捷的服务,而用户对WEB站点的满意度主要以访问速度来衡量。作为优化系统性能的一部分,WEB服务器性能优化是很重要的。如同SQL SERVER数据库服务器一样,我们主要是通过提高服务器硬件配置来提高WEB服务器性能的。另外,在以下方面作了改进:

3.1 分离服务器

我们将WEB服务器与数据库服务器独立开来,也与局域网中的域控制器独立开来。这样,各服务器各司其职,也把各种网络任务分摊开来,避免服务器任务过重,影响系统性能。

3.2 改变日志存放地点

日志的记录,以前我们都是存放在ODBC数据源,由于数据库服务器与WEB服务器物理分离之后,若仍沿用以前方法记录日志,必将增加日志存储时延。在性能优化过程中,我们改将日志以文件形式存储在WEB服务器硬盘中,并在记录期间适当地增加用来记录日志的内存缓冲区容量以减少磁盘活动。

3.3 增加IIS高速缓存容量

增加IIS高速缓存是对WEB服务器进行“软”配置时最重要的选项。WEB服务器保留了一部分内存空间用作IIS高速缓存,为将来的请求存储对象,这样IIS就可以从高速缓存中检索对象以减少从硬盘中的检索次数。我们将注册表中\HLM\system\curre

ntcontrolset\services\inetinfo\parameters下的MemoryCacheSize键值设置为20M(缺省为3M),从而大大提高了IIS的性能。必须注意的是在修改注册表后,需要重新启动才能生效。

4 性能优化

根据统计资料,对网络、硬件、操作系统、数据库参数进行优化所获得的性能提升全部加起来只占整个应用系统性能提升的40%左右,其余60%系统性能的提升来自对应用程序的优化。更有优化专家认为,对应用程序的优化可以得到80%的系统性能的提升。故而,在项目建设中我们特别重视对的性能优化。

4.1 合理选择SqlDataRead和DataSet类

在对系统进行优化过程中,我们发现同样是完成检索与查询功能,项目组的三位编程人员在编程时使用了两种不同的方法,一位使用了SqlDataRead类,其他二位使用了DataSet类来完成检索功能。我们意识到这里应该是一个性能改进的地方。因为,同样的功能可以用不同的方法来实现,而不同的实现方法必然有优劣之分。那么,如何确定在做不同处理时是使用SqlDataRead还是DataSet更能提高系统性能呢?我们是借助于性能测试工具Rational Quantify来得到答案的。我们生成了一个有10万条记录的库,然后分别使用SqlDataRead和DataSet来实现同样条件的查询,根据Quantify所给出的测试结果,发现SqlDataRead比DataSet少花8%左右的时间,而在做批量修改时Quantify却“告诉”我们使用DataSet比SqlDataRead少花6%左右的时间。最后我们在所有查询功能中采用SqlDataRead类而在更改记录内容时采用DataSet,这样,做到了在需要的地方使用最合适的实现方法来提高系统的性能。

4.2 合理使用Application和Session对象

大家都知道,Application和Session为数据缓存在内存中提供了方便的容器,在系统中,我们将一些常用的数据(如用户信息)和数据库连接分别指派到Session(按每个用户存储)和Application(所有用户共享)对象中,以为这样肯定有利于系统性能的提升。但在使用Quantify进行性能测试时,意外地发现虽然Session对象提升了不同HTTP调用之间系统的性能,但存储有数据库连接的Application却成了各页面争抢的对象。由此产生了数据库连接瓶颈,严重地影响了系统性能!这是我们所没有想到的。为了解除对Application的争抢现象,我们撤消了数据库连接到Application对象的指派,同时改用数据库连接池技术提高性能。

4 结束语

我们通过实施以上一系列的性能优化措施,大大提高了软件的性能,增加了用户满意度。但影响系统性能的因素是如此之多,而应用又各不相同,要找出一个通用的性能优化方案是不现实的,在系统开发和维护的过程中必须针对具体情况,不断摸索加以调整。

参考文献:

[1]马琳.Web系统性能测试及优化[J].计算机工程,2005,31(12):229-231.

[2]范孝良,国秀丽.企业信息化系统应注重数据库的性能优化[M].上海第二工业大学学报,2006,23(1):53-56.

[3]李增强.Microsoft SQL Server 2000数据库系统设计优化[J].计算机系统应用,2006(10):88-89.34.

本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。