




已阅读5页,还剩90页未读, 继续免费阅读
(计算机应用技术专业论文)高考报名系统性能优化的研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 数字化、网络化、信息化已经成了新世纪人们生活的一种状态。随着计算机 技术和网络技术的迅速发展,如何利用网络与计算机技术来提高办公效率的问题 变得越来越有现实意义,所以广东省考试中心开发了一套高考报名系统。广东省 高考报名系统经过两年的运行实践证明,系统的功能已经满足用户的需求,但是 系统的性能还有待提高。怎样通过对高考报名系统的改进来提高系统的性能将是 我们讨论的重点,系统的性能问题也是当今业界的热点话题之一,它决定了系统 在实际运行中能否满足用户的需求。 本课题的来源是广东省高考报名系统。我们分析了广东省高考报名系统最大 的且最重要的特点就是需要在短时间内接受大批量考生同时在线报名。我们通过 深入分析广东省高考报名系统的整个体系结构,并结合在实际运行中出现的问 题,提出了对高考报名系统性能改进的方案。本文主要由以下两个方面对提高系 统的性能来做研究:一方面是从数据层的设计方面来提高系统性能;另一方面是 从程序应用层方面来提高系统的可靠性、可扩展性和可维护性。 在数据层的设计方面,我们通过分析o r a c l e 数据库的选用,然后再结合系 统的特点与o r a c l e 数据库的相关技术来对系统的数据层进行重新的设计。主要 的工作有对o r a c l e 运行参数的设置,对大数量表建立分区表,对经常需要查询 的表建立索引,对数据库的时间空间进行分布式处理,最后重点讨论了系统的统 计功能的实现,因为它是影响系统性能最重要的因素之一。通过这些做法在数据 层上来提高系统的性能。 在程序应用层设计方面,高考报名系统是一个基于w e b 应用的系统。我们 主要是采用s t r u t s 框架技术、采用优化的s q l 数据库操作语句和标准化的程序 设计语言以及缓存技术这几个方面来对系统进行优化。从而,一方面有效她提高 了系统的性能,另一方面提高了系统的可靠性、可扩展性和可维护性。 论文最后对所做的工作进行了总结,展望了w e b 应用系统性能提高的研究 发展前景,并指出了高考报名系统需要进一步的研究方向。 关键词:报名系统:性能优化;o r a c l e 数据库;s t r u t s 框架;s q l 语旬 查三些奎兰三兰至圭兰堡丝三 a b s t r a c t f o l l o w i n gw i t ht h ed e v e l o p m e n to ft h ec o m p u t e ra n dn e t w o r kt e c h n o l o g y , t h e p e o p l e sl i f e s t y l eh a db e e nc h a n g e di n t oa n o t h e rs t a t u sw i t ht h ed i g i t ,n e t w o r k i n ga n d i n f o r m a t i o n h o wt ou t i l i z et h en e t w o r ka n dc o m p u t e rt e c h n o l o g yt oi m p r o v et h e w o r k i n ge f f i c i e n c y h a sm a d e s e n s e t h e r e f o r e , t h eg u a n g d o n gp r o v i n c i a l e x a m i n a t i o nc e n t e rh a sd e v e l o p e das y s t e mf o rt h ec o l l e g ee n t r a n c ee x a m i n a t i o n g u a n g d o n gp r o v i n c e ,f o re x a m i n a t i o ns y s t e ma f t e rt w oy e a r so fo p e r a t i o nh a sb e e n p r o v e dt h a tt h es y s t e mh a st h ef u n c t i o nt om e e tt h en e e d so fu s e r s ,h o w e v e r , t h e p e r f o r m a n c eo ft h es y s t e mh a v ey e tt oh ei m p r o v e d h o wt h ef i s to ft h ec o l l e g e e n t r a n c ee x a m i n a t i o ns y s t e mi m p r o v e m e n t st oe n h a n c et h ep e r f o r m a n c eo f t h es y s t e m w i l lh et h ef o c u so f o u rd i s c u s s i o n s y s t e mp e r f o r m a n c ep r o b l e m si nt o d a y si n d u s t r y i st h eh o t t e s t t o p i ci ni t sd e c i s i o no f t h es y s t e mg a l lm e e tt h ed e m a n do f u s e r s t h ei s s u ei st h es m l r c ef o r g u a n g d o n gp r o v i n c ee x a m i n a t i o ns y s t e mw e a n a l y z e dt h es y s t e mf o re x a m i n a t i o n , g u a n g d o n gp r o v i n c e ;t h el a r g e s ta n dm o s t i m p o r t a n tf e a t u r ei st h a ti nas h o r tp e r i o do ft i m eal a r g ea m o u n to fc a n d i d a t e s m e a n w h i l eo n l i n ea p p l i c a t i o n t h r o u g hi n - d e p t h a n a l y s i so fg u a n g d o n gp r o v i n c e ,f o r e x a m i n a t i o no ft h ee n t i r e s y s t e ma r c h i t e c t u r e ,i nc o m b i n a t i o nw i t ht h ea c t u a l o p e r a t i o no ft h ep r o b l e mt h er i g h tf o rt h ec o l l e g ee n t r a n c ee x a m i n a t i o ns y s t e m p e r f o r m a n c ei m p r o v e m e n tp r o g r a m t h e s ep a p e r sm a i n l yf r o mt h ef o l l o w i n gt w o a s p e c t st oi m p r o v et h ep e r f o r m a n c eo f t h es y s t e md or e s e a r c h :w h i l ed a t al a y e rf r o m t h ed e s i g nt oi m p r o v es y s t e mp e r f o r m a n c e ;t h eo t h e ri sf r o ma p r o c e d u r a la p p l i c a t i o n h y e r , t oi m p r o v es y s t e mp e r f o r m a n c e t h ed a t al a y e ri nt h ed e s i g n ;w ea n a l y z e dt h r o u g ht h eu s eo fo r a c l ed a t a b a s e , t h e nc o m b i n et h ec h a r a c t e r i s t i c so ft h i ss y s t e ma n do r a c l ed a t a b a s et e c h n o l o g i e s r e l a t e dt ot h es y s t e m sd a t al a y e rr e - d e s i g n t h em a i nw o r ko nt h eo r a c l eo p e r a t i n g p a r a m e t e r s ,t h el a r g en u m b e ro ft a b l e st oe s t a b l i s hz o n i n gt a b l e so f t e nn e e dt om a k e i n q u i r i e so nt h et a b l ei n d e x , a n dt h ed a t a b a s es p a c eo ft i m ed i s t r i b u t e dp r o c e s s i n g , f i n a l l yf o c u so nt h es y s t e m ss t a t i s t i c a lf u n c t i o n sa r er e a l i z e d , b e c a u s ei ti sa f f e c t i n g s y s t e mp e r f o r m a n c et h em o s ti m p o r t a n tf a c t o rt h r o u g ht h e s ep r a c t i c e si nl i n ew i t h d a t al a y e r si m p r o v es y s t e m p e r f o r m a n c e p r o c e d u r e si nt h ea p p l i c a t i o nl a y e rd e s i g n , t h ec o l l e g ee n t r a n c ee x a m i n a t i o n s y s t e mf o raw e b - b a s e da p p l i c a t i o ns y s t e m w ea g em a i n l yu s i n gs t r u t sf r a m e w o r k t e c h n o l o g y , u s i n gt h eo p t i m i z e do p e r a t i o no ft h es q ll a n g u a g ea n ds t a n d a r d i z a t i o n o fp r o g r a m m i n gl a n g u a g e sa n dc a c h i n gt e c h n o l o g yt os e v e r a la s p e c t so fs y s t e md a t a m a r k e t i n go p t i m i z a t i o n t h u s ,w h i l ee f f e c t i v ei ni m p r o v i n gt h es y s t e mp e r f o r m a n c e , e n h a n c e dr e l i a b i l i t yo f t h es y s t e m , e x t e n s i b i l i t ya n dm a i n t a i n a b i l i t y f i n a l l y , t h ep a p e ro nt h ew o r ko fs u m m i n gu p ,l o o k e dt ot h ew e ba p p l i c a t i o n p e r f o r m a n c ee n h a n c i n gr e s e a r c ha n dd e v e l o p m e n tp r o s p e c t sa n dt h a tt h es y s t e m l l e e d sf u r t h e rr e s e a g c l l k e y w o r d s :a p p l i c a t i o ns y s t e m ;p e r f o r m a n c eo p t i m i z a t i o n ;o r a c l ed a t a b a s e ;s t r u t s f r a m e w o r k ;s q l i 独创性声明 独创性声明 秉承学校严谨的学风与优良的科学道德,本人声明所呈交的论文是我个人在 导师的指导下迸行的研究工作及所取得的研究成果。尽我所知,除了文中特别加 以标注和致谢的地方外,论文中不包含其他人已经发表或者撰写过的研究成果, 不包含本人或其他用途使用过的成果。与我一同工作过的同志对本研究所做的任 何贡献均已在论文中作了明确的说明,并表示了谢意。 本学位论文成果是本人在广东工业大学读书期间在导师的指导下取得的。论 文成果归广东工业大学所有。 申请学位论文与资料若有不实之处,本人承担一切相关责任, 指导老师签字: 第三章高考报名系统数据层的优化 从硬盘中检索的数据就会越少。所以在缓存信息时,数据字典缓存操作方式与 d b c a c h e s i z e 一样。为了得到最佳的性能,最好把整个o r a c l e 数据字典都 放在内存里进行缓存。但是通常都是做不到这点。为了解决这个问题,o r a d e 把 s q l 语句所要的执行计划进行缓存,这同时也就减少访问数据字典信息的次数。 3 3 4 调整p g a _ a g g r e g a t e _ t a r g e t 以优化对内存的应用 p g aa g g r e g a t et a r g e t 啪就是o r a c l e 想在所有会话中间分配的会话 p g a p l :( p r o g r a m g l o b a la r e a s 程序全局区) 内存总量。使用p g a _ a g g r e g a t e _ t r g e t 可以设定用户会话的总内存使用量来减少o s 分页。当设置 p g aa g g r e g a t et r g e t 时,必须将w o r k a r e as i z ep o l l c y 设为 a u t o 。一般情况下,如果数据库大小不超过2 5 g b ,p g aa g g r e g a t et r g e t 的值为2 5 6 m b ;如果数据库大小在i o o g b 到2 0 0 g b 之问, p o aa o g r e g a t et r g e t 的值为5 1 2 m b ,如果数据库大小在5 0 0 g b 到 1 0 0 0 g b 之间,p g aa g g i 也g a t et r g e t 的值为l g b 。高考报名系统的数据 库大小不会超过2 5 g b ,所以p g aa g g r e g a t et r g e t 的大小可以设置为 2 5 6 m b 。 3 4 数据库表的设计 在做高考报名系统的第一年,我们没有考虑到库表的设计对系统性能的重要 影响,导致库表的设计有很多不合理的地方,比如在一张表中设置多个字段为主 键,造成表的数据量很大,有些表的数据量达到了3 0 0 多万条;对大的数据表没 有做任何的处理;表与表之间的关联比较多。由于这些存在的原因造成系统的性 能比较低,系统在运行的时候出现的问题比较大。 在做高考报名系统第二年就是针对库表设计不合理出现的问题进行整改。把 原来设计为多主键的表改为单主键,把多表关联的表结构尽量减少它们之间的关 联;整改的重点放在了拆分大表的问题上,在高考报名系统中,数据量大的表都 是与考生有关的表,比如考生表( k s ) ,考生家庭关系表( k s j t g x ) ,考生简历表 ( k s j l ) 等。我们的做法是,把这些表都是按照广东省各市地区代码来拆分,这 样就可以把数据量大的表分成多个数据量小的表。虽然这样子拆分会占用硬盘空 广东工业大学丁学硕士学位论文 问,但是经过实践证明这种做法对系统性能的提高起到很重要的作用。所以第二 年的高考报名系统在整一个的报考期间都运行良好,只是在最后招办统计的时 候,出现局部死锁的现象。 随着报名人数的增加,业务的改动,2 0 0 6 年的报名系统已经不能满足功能 上的需求和性能上的需求,所以2 0 0 7 年的报名系统需要再次对系统的进行整改, 这次的整改经过上一节的分析,需要选用o r a c l e 数据库。选用o r a c l e 数据库后, 我们又应该怎么样来改经数据库表的设计呢? 这一节中着重考虑了建立表空间、 对大数据表建立分区表和索引三个方面来改进2 0 0 7 年的高考报名系统的库表设 计。 3 4 1 表空间 表空间m 是数据库的逻辑组成部分。从物理上说,数据库数据存放在数据文 件中;从逻辑上说,数据库数据则存放在表空间中,表空间由一个或多个数据文 件组成。表空间和数据文件的对应关系图如图3 1 所示: 国卜鼍目件 图3 - 1 表空间和数据文件的对应关系图 f i g u r e3 - 1c o r r e s p o n d i n go f t a b l e s p a c ea n dd a t af i l e 通过使用表空间,可以加强数据管理,控制数据库所占用的磁盘空间,控制 用户所占用的空间配额;通过表空间,数据库管理员可以将不同类型数据部署到 不同位置,从而提高数据库的运行性能。怎么样才能设计合理的表空间“1 呢? 任何一个应用程序的库表至少需要创建两个表空间,其中之一用于存储表数 据,而另一个用于存储表索引数据。因为如果将表数据和索引数据放在一起,表 数据的i o 操作和索引的i o 操作将产生影响系统性能的f o 竞争,降低系统的 响应效率。将表数据和索引数据存放在不同的表空间中( 如一个为a p pd a t a , 另一个为a p p j d x ) ,并在物理层面将这两个表空间的数据文件放在不同的物理 第三章高考报名系统数据层的优化 磁盘上,就可以避免这种竞争了。 拥有独立的表空间,就意味着可以独立地为表数据和索引数据提供独立的物 理存储参数,而不会发生相互影响,毕竟表数据和索引数据拥有不同的特性,而 这些特性又直接影响了物理存储参数的设定。 此外,表数据和索引数据独立存储,还会带来数据管理和维护上的方便。如 你在迁移一个业务数据库时,为了降低数据大小,可以只迁出表数据的表空间, 在目标数据库中通过重建索引的方式就可以生成索引数据了。 因此在高考报名系统中,我们也采用了表空间来管理表数据,并且分别为库 表和索引建立不用的表空间。 在为高考报名系统建立表空间时所用到的s q l 语句如表3 - l 所示: 表3 - 1 建立表空间语句 t a b l e3 - 1t a b l es p a c es e n t e n c e 3 4 2 分区表 在大量业务数据处理的项目中,可以考虑使用分区表来提高应用系统的性能 并方便数据管理。在高考报名系统中,有些表的数据总数超过1 0 0 多万条,对这 些大数据表的数据,我们就采用了o r a c l e 数据库的分区表管理。 o r a c l e 是怎样来管理对象空间p 1 的呢? 段是指用于存储特定逻辑结构的所有 广东工业大学t 学硕士学位论文 数据,它是由一个或多个区组成的。区是o r a c l e 进行空间分配的逻辑单位,它 是由相邻数据块所组成的。数据块是o r a c l e 在数据文件上执行i o 操作的最小单 位。由此可见,o r a c l e 中最大的管理对象方式是采用段,在段中可以分为多个区, 在每一个的区中又可以包含多个数据块。 分区表是按照特定方式逻辑划分大表,最终将其数据部署到几个相对较小的 分区段中。当执行s q l 语句访问分区表时,服务器进程可以直接访问某个分区 段,而不需要访问整一张表的所有数据,从而降低磁盘i o 次数,提高系统性能, 所以分区表对系统性能的提高具有非常重要的意义。o r a c l e 提供了范围分区、散 列分区、列表分区、组合分区四种分区方法。 ( 1 ) 范围分区 范围分区是指按照列值范围逻辑划分大表数据。如果表的数据可以按照 逻辑范围进行划分,并且在不同范围内数据分布比较均衡,可以使用范围分 区。 ( 2 ) 散列分区 散列分区是指按照o r a c l e 所提供的散列( h a s h ) 函数来计算列值的数 据,并最终按照函数结果分区大表数据。 ( 3 ) 列表分区 列表分区用于将离散数据有效地部署到不同分区中。 ( 4 ) 组合分区 组合分区是范围分区和散列分区的组合,它首先按照列值范围进行逻辑 范围分区,然后在每个范围分区的基础上再按照散列函数进行散列分区。 采用分区表的好处1 4 1 : 可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用。 维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即 可。 均衡i o :可以把不同的分区映射到磁盘以平衡i 0 ,改善整个系统性能。 改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索 速度。 我们在创建考生表( k s ) ,考生简历表( k s j l ) ,考生家庭关系( k s j t g ) 【) 等数据库表 时,为了提高系统的性能采用了o r a c l e 的分区表的方式。考虑到这些表的数据 3 0 第三章高考报名系统数据层的优化 是可以通过地区来划分,所以在创建表的时候,我们采用了列表分区的方式,不 同地方考生的数据分散到不同的区域中从而达到分区。 我们以高考报名系统q a g , j 建考生表为例来说明一下分区表的具体创建过程, 如表3 - 2 所示: 表3 - 2 创建分区表 t a b l e3 - 2c r e a t et h ep a r t i t i o nt a b l e 3 4 3 表索弓 高考报名系统设计到比较多的查询和统计,所以在创建表的时候,我们都对 广东工业大学工学硕士学位论文 关键的字段都做了索引。可能大家会遇到这样的问题,在自己为表创建索引后, 发现建立的索引对数据查询速度没什么影响。所以我们不但只是建立索引,最重 要的是应该考虑怎么样建索引才比较合理,才能提高系统的性能? 一般的数据库的有两种基本的索引类型。1 ,一种是有序索引,也就是基于值 的排序顺序;另一种是散列索引,也就是基于将值平均分布到若干散列桶中,一 个值所属的散列桶通常由一个函数来决定。在对待有序索引还是散列索引这两种 技术,没有哪一种技术是最好的,只能说哪一种技术对特定的数据库应用是最适 合的。在对待大数据量的数据库中,采用索引顺序文件组织最大的缺点是随着文 件的增大,性能会下降,克服这个缺点,我们采用了b + 树索引。b + 树索引最大 的优点是查找直接而且高效。 在o r a c l e 数据库中会自动为表的主键列建立索引阿,也就是建立一个r o w i d , 这个默认的索引是普通的b + 树索引。对于主键值是按顺序( 递增或递减) 加入的 情况,默认的b + 树索引并不理想。这是因为如果索引列的值具有严格顺序时, 随着数据行的插入,索引树的层级增长很快。搜索索引发生的i o 读写次数和索 引树的层次级数成正比,也就是说,一棵具有5 个层级的b + 树索引,在最终读 取到索引数据时最多可能发生多达5 次i o 操作。因而,减少索引的层次级数是 索引性能调整的一个重要方法。 如果索引列的数据以严格的有序的方式插入,那么b + 树索引树将变成一棵 不对称的“歪树”,如图3 2 所示: 图3 掣不对称的“歪树”图3 3 ”趋向对称的索引树 f i g u r e3 - 2a s y m m e t r i c “a w r yt r e e f i g u r e3 - 3t e n d e n c ys y m m e t r i ci n d e xt r e e 而如果索引列的数据以随机值的方式插入,我们将得到一棵趋向对称的索弓 树,如图3 3 所示。 第三章高考报名系统数据层的优化 比较图3 2 和图3 3 ,我们可以看到,在图3 2 中搜索到a 数据块需要进行5 次i o 操作,而在图3 3 中仅需要3 次的i o 操作。为什么会出现这种情况,原 因主要是因为索引列数据从序列中获取,其有序性是无法规避的,但在o r a c l e 数据库中是允许对索引列的值进行反向,即预先对索引列的值进行比特位的反 向,如当索引列的值为1 0 0 0 ,1 0 0 1 ,1 0 1 0 ,1 1 0 0 时,经过反向后的值将是0 0 0 1 , 1 0 0 1 ,0 1 0 1 ,0 0 1 1 。显然经过位反向处理的有序数据变得比较随机了,这样所得 到的索引树就比较对称,从而提高表的查询性能。 但反向键索引也有它局限性:如果在w h e r e 语句中,需要对索引列的值进行 范围性的搜索,如b e t w e e n 、 等,其反向键索引无法使用,此时,o r a c l e 将 执行全表扫描;只有对反向键索引列进行 和= 的比较操作时,其反向键索 引才会得到使用。 在高考报名系统中,一般的查询条件都是使用= 的操作,所以为表建立反向 键索引。但是考虑到查询的条件为b e t w e e n 、 的情况,我们还是应该为这些 表建立普通的b + 树索引。故此,两种方式的索引并存使用将更能提高系统的查 询速度,进而提高系统的性能。 比如在考生表中,考生号是考生表的主键,主键名称为p kk s h ,我们可以 为考生号主键列上建立一个反向键索引i d x - k s h ,并使p kk s h 使用这个索引。 建立反向键索引s q l 语句如表3 3 所示: 表3 - 3 建立反向索引 t a b l e3 3c r e a t ei n v e r s i o ni n d e x 3 5 数据库连接池 在基于w e b 的应用中,传统模式下访问数据库的步骤是: ( 1 ) 在主程序中建立数据库连接; ( 2 ) 执行s q l 操作,访问数据库; ( 3 ) 断开数据库连接。 这种访问数据库的模式,存在很多问题。首先,系统需要为每一次w e b 请 广东工业大学工学硕士学位论文 求建立一次数据库连接,因为建立数据库连接的操作开销很大,当访问量比较大 时很可能成为制约系统性能的瓶颈。其次,程序必须管理好每一个数据库连接, 以确保他们能被正常的关闭,如果发生异常而致使某些连接未能关闭,将会导致 数据库系统出现内存泄露,以至于必须重启数据库服务器才能恢复正常。 数据库连接池技术正是为解决上述问题而产生的。数据库连接池的基本思想 就是预先建立一些数据库连接并放置于内存对象中以备使用,当程序中需要建立 数据库连接时,可以从内存中取一个连接直接使用而不必新建,当使用完毕后, 只需放回内存即可。数据库连接的建立、断开都由连接池自身管理,不需要用户 程序干涉,可以通过设置相应的参数来控制连接池的工作方式,如规定预先建立 的连接数以及每个连接的最大可用次数等。通过使用数据库连接池,可以大大提 高w e b 程序的运行效率。 目前使的数据库连接池很多,我们在高考报名系统中使用的连接池是 w e b l o g i c 自带的连接池。在w e b l o g i c 中配置数据库连接池的操作比较简单,可 以进入w e b l o g i e 的控制台进行配置。配置好数据库连接池后,我们就可以通过 程序来调用。调用的方法如表3 4 所示: 表3 - 4 建立数据库链接 t a b l e3 - 4c r e a t et h ed a t a b a s ec o n n e c t i o n 第二章高考报名系统数据层的优化 3 6 分布式管理的优化 集中式数据库系统是指完全运行在一台计算机中;分布式数据库系统n 是指 数据库存储在几台计算机中,各台计算机之间通过诸如高速网络或电话线等各种 通信媒介互相通信。在高考报名系统中,我们是采取数据库的集中管理,然后采 取分布式地部署应用程序。虽然我们是集中管理数据库的,但考虑为提高系统的 性能,我们根据实际应用中的特点,采取了分布式管理的思想。 在广东各市各地区的考生,我们采取分时间段报名。比如前几天的由深圳、 东莞、佛山等几个市的报名,随后在由深圳等其它几个市的报名,这样可以通过 时间的分布性来减轻对系统的压力。在后台处理中,我们也采用了时间的分布性 来控制,比如在统计功能中,当时,我们考虑到高考报名的统计数据一般不要求 实时性,要求数据的最后准确性。所以我们也采用为统计功能写了统计的存储过 程,并且让它在不是报名高峰期的时段中定时地执行,这样就达到了时间分布处 理,提高了系统的性能。 对于空间的分布性处理,我们主要是通过表结构的设计来做。在前年的 s y b a s e 数据库中,我们根据考生在地域的不同,把考生相关的表,一张分开成 2 3 张相同结构的表,这2 3 张的表是为保存广东2 3 个市区的考生。在今年的数 据库中,我们采取了分区管理的方法来对数据进行分流管理。这也是一种以空间 换时间的做法,目的是为了提高高考报名系统的性能。 3 7 实现统计功能 高考报名系统的统计功能主要是统计考生的报名情况,总来说来业务不算复 杂,但是需要对表占用时间可能比较长,对系统的性能影响非常的大。如果在报 名的高峰期进行统计,会造成系统的压力过大,甚至造成瓶颈。所以我们把统计 功能独立放在这里来讲,就是因为它在对系统性能的影响因素重占据重要的地 位。在这里我们考虑通过存储过程和j a v a 事务处理来实现统计功能,提高系统 的性能,满足我们应用上的需求。 存储过程旧就是将常用的或很复杂的工作,预先用s q l 语句写好并用一个 指定的名称存储起来,那么以后要叫数据库提供与已定义好的存储过程的功能相 广东 业大学工学硕士学位论文 同的服务时,只需调用e x e c u t e ,即可自动完成命令。存储过程通常会使性能增 加,存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译, 并对其进行缓存以备将来重用。 3 7 1 统计功能的业务模块 高考报名系统统计功能o ”主要包括:考生人数统计、各科目报考人数统计、 报考科目组合统计、报名情况统计、报名情况详细统计、综合人数统计。具体的 模块划分如图3 - 4 所示: 图3 - 4 统计功能模块图 f i g u x e3 - 4s t a t i s t i c sf u n c t i o nm o d u l e 考生人数统计主要是在报名期间以及报名结束后可以按照用户权限或者地 域实时统计并打印全省、各市、各县( 区) 不同类别( 包括考生类别,性别,户 口所在地,毕业中学,民族,政治面貌等项目的单一条件或多个条件的组合) 的 考生人数以及总人数;各科目报考人数统计主要是在报名期间以及报名结束后可 以实时统计并打印全省、各市、各县( 区) 、各报名点、各个科目的报考人数; 报考科目组合统计主要是在报名期间以及报名结束后可以实时统计并打印全省、 各市、各县( 区) ,各报名点各个报考科目组合的人数。各科目的关系必须有“和” 或“与”的关系供选择;报名情况统计主要是能够按指定格式分类别分科目分年 龄统计报名人数情况;报名情况详细统计和综合人数统计就是可以通过查询条件 第三章高考报名系统数据层的优化 选出考生总体的报名情况。 3 7 2 统计功能对性能的影响 系统的统计功能需要对大量的数据进行统计需要占用系统的大量资源。如果 在大量考生同时在线报名的时候,也进行统计,这就很容易造成数据表的死锁, 严重地影响系统的性能。一般的统计做法都是采用对全表进行扫描的方式去统 计,比如要统计考生的总人数,可能会写s e l e c tc o u _ r l t ( * ) ,f r o m 表名( 1 【s ) 这 样的语句计算总人数和显示出考生的信息。这种做法通常执行速度都会很慢,会 导致表的死锁。s e l e c tc o u n t ( * ) f r o m 表名( 1 【s ) 方式统计所需要的时间如表3 - 5 所示: 表3 - 5 统计执行时间 t 曲l e3 - 5s t a t i s t i c se x e c u t i o nt i f i 碡 虹表中的记录总数执行时间 5 万条1 0 章秒 1 0 万条2 0 毫秒 2 0 万条4 0 毫秒 5 0 万条 9 0 毫秒 1 0 0 万条1 7 1 毫秒 2 0 0 万条 3 2 8 毫秒 5 0 0 万 7 5 0 毫秒 1 0 0 0 万条1 7 1 8 毫秒 通过传统的统计方法来统计高考报名系统得到效果是比较差的,如果在需求 显示考生的具体信息,那么就需要3 、4 秒的时间,如果多个用户同时统计,那 么需要的时间就更多了,可能需要几分钟都还没有结果显示。这样就达不到实时 统计的效果了,而且会很影响用户的情绪。所以这种统计方式是不能满足用户的 需求的,我们需要把对整个的统计方案进行重新的设计来提高系统的性能,但是 应该如何对系统做整改昵? 广东工业大学工学硕士学位论文 3 7 3 统计功能的实现方案 我们在整改系统统计功能的过程中,提出了四种整改方案: 1 直接统计:也就是传统的统计方式,在考生报名时,通过用s e l e c tc o u n t ( * ) f r o m 表的方法来计算出报考的人数。这种方法经常会操作时间比较长, 容易造成死锁,所以通过测试不考虑这种方法。 2 触发器处理:也就是在考生报名时,通过执行触发器来增加考生的人数。 由于在统计的过程中可能出现一对多的关系,所以在触发器中需要用到 游标的操作,当对数据进行大量操作的时候也会造成数据表的死锁。所 以通过测试也不用这种方案。 3 j a v a 事务处理:也就是在考生报名时,通过j a v a 程序同时把报名人数加 l 。实际上,j a v a 事务处理的效果是与触发器一样的,都是当考生有变 动的时候进行计算,但是,在对系统的测试中发现i a v a 事务处理对数据 表不会造成死锁。这种方案也是可以接受的。 4 存储过程处理:也就是在考生报名时或报完名后,都可以通过执行存储 过程来统计报考的人数。采用存储过程的方法其实是为了实现分时处 理,也就是说在不同的时间也可以实现对数据的统计。如果当考生同时 在线报名的时,我们可以先不执行存储过程,等到考生报名人数比较少 时,再执行存储过程来达到统计的目的。执行存储过程可以用定时器去 触发它,可以都在凌晨2 、3 点的时候执行,那时候报名的考生就最少 的。这样做就可以避免在高峰期的时候要对系统进行统计,造成系统性 能下降。 经过分析,数据库中插入一条记录的时间是相当的短的,所以采用i a v a 事 务只是在考生报名的同时给统计表插入数据,对系统的开销来说是很少的,每统 计一次统计结果就加l ,如果招办要查询统计结果时候,只要把表中的结果读取 就出就可以了,这样统计的速度就快很多,对系统的性能来说是极大的提高。但 是,当大量考生插入数据的时候,可能会出现有些记录遗漏的情况,所以,我们 为了防止采用j a v a 事务统计得到的结果不正确,采用了存储过程来统计,存储 过程统计就是对报名的进行阶段性的统计,然后把统计的结果更新统计表。 为适应实时统计的要求需要采用了i a v a 事务处理,也为适应最终统计的要 第三章高考报名系统数据层的优化 求需要采用存储过程来处理。在我们的系统中,既要保证统计结果的实时性,又 要保证统计结果的正确性。所以需要把j a v a 事务处理与存储过程交互执行,一 方面实现了功能需求,另一方面也提高了系统的性能。 3 7 4j a v a 事务的实现 为做统计功能,我们先设计好s t a t i c k m ( 考生报考科目统计) 、s t a t i c k s ( 3 + 证书考生报考人数统计) 、s t a t i c k s x ( 3 斗x 考生报考人数统计) 这三张表 来保存统计数据。 j a v a 事务处理就是当考生增加时,对这三张表中相应的字段信息加l ,具体 的部分实现代码如表3 - 6 所示: 表3 - 6j a v a 事务实现统计功能部分代码 1 a b l e3 - 61 飞ep a r tc o d eo f j a v at r a n s a c t i o nr e a l i z es t a t i s t i c sf u n c t i o n 广东工业大学_ t 学硕士学位论文 4 0 第三章高考报名系统数据层的优化 3 7 5 存储过程的实现 存储过程也就是一次性的计算出考生报考的人数,然后更新s t a t i c k m 、 s ”肌c k s 、s t a n c k s x 这三个表的数据来实现统计。 o r a c l e 数据库可以通过p l s q l 唧来编写,它的执行速度至少比j a v a 的存储 过程快5 倍。创建考生人数统计存储过程部分代码如表3 7 所示: 表3 7 存储过程部分代码 t a b l e3 71 1 把p a r tc o d eo f p r o c e d u r er e a l i z es t a t i s t i c sf u n c t i o n 4 1 广东工业大学工学硕十学位论文 3 8 小结 本章讲述了在数据层上对高考报名系统性能进行优化。通过总结前两次系统 出现的性能问题提出了解决问题的方案,在本次的系统设计中,我们主要从数据 库的选用上做了调整,从之前的s y b a s e 数据库升级为o r a c l e 数据库,然后对数 据库的表结构做出了改进,最后结合数据库的技术多方面对系统性能进行改进, 进而使系统的性能得到大大的提高。 第四章高考报名系统应用程序层的优化 第四章高考报名系统应用程序层的优化 4 1 概述 在上一章中,我们分析和实现了高考报名系统数据层方面的优化,使得系统 性能得到极大的提高。在这一章中,我们对高考报名系统的应用程序层进行分析, 主要从采用的框架技术来讨论对系统的可维护性的改进,然后分析采用优化的 s q l 语句、缓存技术和程序代码的规范来对系统性能方面的提高。 4 2 系统框架技术 在应用程序层的优化,在前两年,我们开发高考报名系统是使用纯j s p 的技 术,但是实践证明,这种技术实现的代码是难于维护的,还会系统的性能造成影 响。j s p 的实现模型如图4 1 所示: 浏 览 器 ;求一 ;应一 耶9 i _ j 占。 二 - i 数据 d 图4 - 1 ”j s p 的实现模型 f i g t a e4 - 1t h em o d e lo f j s p 从图中可以看出j s p 页面负责响应用户请求并将处理结果返回用户。j s p 既 要负责业务流程控制,又要负责提供表示层数据,同时充当视图( v i e w ) 和控制器 ( c o n t r o l l e r ) ,未能实现这两个模块之间的独立和分离。尽管j s p 的体系十分适合 简单应用的需求,但却不适合应用在开发复杂大型的应用程序中。流程发生变化 广东丁业大学_ = 学硕士学位论文 的时候,大多数时候,只要调整组装服务的方式来就能满足这种变化。这种通过 重用粗粒度服务而不是在底层编程来开发新应用以满足业务新需求的方法,使得 i t 组织能够以更少的投入、更快的速度、更好的质量来开发应用系统“”。 4 2 1s t r u t s 框架的原理 由于j s p 存在的自身的缺点是无法改变的,所以我们主要考虑采用m v c 模 型的s t r u t s 框架技术来取代纯j s p 的框架技术来达到程序的可靠性和可维护性, 进而优化系统程序,提高系统性能。 为理解s t r u t s 的框架技术,我们先从它的模型来分析它。s t r u t s 框架的模型 如图禾2 所示: 图4 2 i ”s t r u t s 框架的模型 f i g t u e4 - 2 t h em o d e lo f s t r u t s s t r u t s 框架实质上就是在j s pm o d e l2 的基础上实现的一个m v c 框架。在 s t r u t s 框架中,模型( m o d e l ) 是实现业务逻辑的j a v a b e a n 或e j b 组件构成,控制 器( c o n t r o l l e r ) 由a c t i o n s e r v l e t 和a c t i o n 来实现,视 ( v i e w ) 由- - 组j s p 文件组成。 模型( m o d e l ) 表示应用程序的状态和业务逻辑。对于大型应用,业务逻辑通 常由j a v a b e a n 或e j b 组件来实现。 视图( v i e w ) 就是一组j s p 文件,在这些j s p 文件中没有业务逻辑,也没有模 型信息,只是标签( t a g ) 。此外,通常把s t r u t s 框架中的a c t i o n f o r mb e a n 也划 分到视图模块中去,a c t i o n f o r mb e a n 也是一种j a v a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论