西安交通大学是首批进入国家“211 工程”建设的大学之一,1999 年被国家确定为我国中西部地区惟一一所以建设世界知名高水平大学为目标的学校。
西安交通大学地处祖国西北,有很大一部分学生来自农村或城市低收入家庭。他们需要国家或者社会的资助,才能保证基本的在校生活并顺利完成学业。但是,国家和社会企事业团体的资助资金是有限的,对于有限的资金如何充分发挥作用,防止这些资金被非贫困生占用,关键问题是准确界定一个学生是否为贫困生。
通常,在学校申请减免学费、困难补助,在银行申请贷款都需要学生家庭所在地开出贫困证明。但是,持有贫困证明并获得了困难补助的学生,时有发生购买高档奢侈品的行为。这就说明各地方对开具贫困证明的管理并不严格,针对这个问题,西安交大信息与网络中心开发了学生餐饮消费统计分析系统,通过学生餐饮消费情况与全校学生平均消费水平进行对比,作为确定贫困生的重要参考。
系统设计
学生的餐饮消费记录存储在后勤集团的数据库中,学生的学籍信息存储在教务处和研究生院。随着西安交通大学的信息化建设,各职能部门通过分布式数据库链路达到数据共享,使得可以根据教务处和研究生院的学籍信息检索到相关学生存储在后勤集团数据库中的餐饮消费记录。信网中心开发的学生餐饮消费统计系统打破了校内信息孤岛,为学生处评定困难补助和减免学费提供了事实依据,使得各类补助的评定工作更加公正、透明。
该系统的主要功能是:将后勤集团、教务处、研究生院这三个部门的异构数据统一到信网中心统一的数据库。在统一的数据库中,统计计算每一个学生的学年平均消费,计算内容包括,学生的早餐、中餐、晚餐的次数和各自的消费平均值,并统计出学生学年消费总额。
整个系统使用MVC架构分为三层:第一层,数据源;第二层,数据融合与计算;第三层,Web展现。

数据源包括后勤集团、教务处和研究生院的数据库。数据融合与计算层的作用是将三个异构的数据库中有用的表同步到统一的数据库进行计算。后勤集团定时导出学生消费数据记录,通过FTP传输到信网中心,并与信网中心建立IPSec以达到数据的安全保密传输。通过分布式数据库的DBLink将教务处与研究生院数据同步到信网中心。使用Web service技术实现系统的业务逻辑,通过Struts框架做出表现层,并通过portlet将查询功能集成进西安交通大学门户网站。
在该系统的实施过程中,关键问题是统计全校每一个学生的餐饮平均消费。餐饮消费记录每天大约20万条,一年的数据量大约7200万条记录。在Oracle中,一年的记录大概占用表空间2G。这样的大表,查找、计算、统计一个学生的消费记录需要约16秒,对全校的学生做统计就需要20天以上。因此,必须要对这个计算过程进行软件和硬件设计上的优化。


软件优化
我们按如下步骤进行统计计算软件设计优化。
第一,按照数据仓库方式安装数据库,使数据库自身对读操作进行优化。加大用户表空间文件大小,使之适合大表的存储;
第二,加大10倍Oracle数据库的排序内存大小,提高Oracle建立索引的性能;
第三,在学生餐饮消费记录表上建立根据学号和消费时间的联合索引。由于要统计的每一个学生每天早、中、晚用餐情况,消费时间上的索引建成为基于小时和分钟的函数索引;
第四,恢复排序内存原始值;
第五,优化存储过程的SQL语句,将select的“*”全部用列名代替,select出来的变量尽量写在一条语句赋值,尽量使用group by来统计运算。
硬件优化
由于计算的性能瓶颈主要集中在用存储过程生成每一个学生的消费统计,计算过程发生在数据库服务器。优化前,我们使用的数据库服务器为高档的PC机(配置:CPU 3GHz,内存2G,硬盘转速7200转/ 秒)。由于数据库服务器的速度与稳定性决定了消费统计计算的性能,服务器出现死机或者硬盘数据损坏,都有可能造成数据计算的失败。作为改进,我们采用戴尔PowerEdge 2950服务器。它配备双核英特尔至强处理器,为用户提供下一代性能与内置扩展能力和机架密集性之间平衡性的结合。
为了深入了解其硬件性能,我们使用了两台Avalanch 2500测试仪模拟最终用户的访问行为进行压力测试。主要测试服务器能够建立的并发链接数、页面成功传送数和响应速度。在Windows平台的测试中,对静态内容的访问最大可以达到48592个并发链接,链接的建立速度达3057个每秒,总计成功传输了1203046个页面。在并发链接数10756个时,页面的响应时间和Http完成的比例都非常理想。混合页面的传输时,最大的并发链接数达到了30348个,链接的建立速度达到每秒4654个。用于文件下载时,系统能够达到的并发链接数达到了10903个。
在大数据量的计算性能测试中,将PowerEdge 2950作为一台数据库服务器时,运行Oracle的存储过程时,该服务器的CPU使用率一直保持1%左右,可见这款服务器非常适合于数据中心等需要高可靠、大运算量的场合应用。
小结
经过上述硬件优化与软件优化,统计计算学生的消费记录的性能提高大约360倍。如图2所示为在大表中查找学生的时间优化前后对比。未经优化时,查找学生的过程就是遍历一遍大表,所以无论查找学生的人数有多少,所用时间都是遍历一遍表的时间。而优化后,则使用索引查找。图3为优化前后统计学生消费记录的计算时间的对比。从图3可见,优化以后,统计18000个学生与未优化时计算统计50个学生用了几乎相同的时间2000秒。经过软件和硬件上的优化,统计全校本科生一学年的消费情况只需不到半个小时,使统计过程得以实现。