技术中心
 
 

深圳地铁AFC系统数据库的应用优化

   日期:2009-05-22     来源:中国测控网    作者:管理员    

  深圳地铁AFC系统是以非接触式IC卡为车票介质,采用Oracle数据库平台的自动售检票系统。该系统能够完成地铁运营的车票制作、售票、检票、财务、统计、分析等全过程业务的实时管理工作。鉴于AFC系统与地铁运营的财务收益密切相关,因此,AFC系统数据的安全性、实时性、完整性等需要得到足够的重视。
  1 概况
  1.1数据库选型
  深圳地铁AFC系统从设计之初就充分考虑到了AFC系统数据量、性能要求、可靠性要求以及性价比等各方面因素,选择了大型数据库管理系统Oracle9.
  i。同时为保证AFC数据的完整性和一致性,中心和车站采用一致的数据库系统。从增加票务收益和提高服务质量的角度,深圳地铁AFC管理中心从多方面采取措施,确保数据库系统安全、可靠运行,并经历了多次大客流考验。到目前为止,深圳地铁AFC系统数据库一直保持稳定运行。
  1.2数据库设计
  从业务和管理角度来进行数据库设计,将数据按其内容、用途和业务范围不同分类。从数据的一致性来说,车站和中心要保持一样的数据定义类型。深圳地铁的数据类型具体分为下列几类。
  交易信息类:交易业务处理产生的各种信息。
  系统维护类:辅助系统

运行和维护的各种参数信息、基础配置信息和用于非业务类控制管理的信息。
  运营管理类:设备管理、运营监控、运营维护等方面的信息。
  票务管理类:票卡类型、票价设定、运营点管理等方面的信息。
  结算管理类:描述结算汇总和帐户处理方面的信息。
  库存管理类:车票库存调人、调出,票卡分类等方面的信息。
  2 数据库的维护
  为确保深圳地铁AFC系统长期、稳定、高效的运作,数据库的维护是一项例行的、不可缺少的工作。为此,需要通过日常监控、日常维护、备份等环节保证AFC系统数据库处在良好运作状态之下。
  2.1日常监控
  (1)验证数据库及连通性。定时对数据库的连接情况进行检查,查看与数据库建立的会话数目是不是正常,如果建立了过多的连接,会消耗数据库的资源。同时,对一些“挂死”的连接,则需要手工进行清理。
  (2)查看警告日志。每天验证数据库正在运行listener并可以访问应用程序后,就应该开始检查数据库日志(alert .log),在查看alert.log的内容时,文件中的许多信息都是常规的,比如数据库的启动、检查点和日志文件的开关。需监控这些消息出现的频率,验证数据库是否按照设计方案运行。正常情况下,数据库在alert.lo
  g中没有大量的错误,如果看到类似ORA-1031这样的错误消息,就需要彻底地调查。

  2.2日常维护
  (1)表空间的管理。通过Oracle数据库提供的Oracle En-terprise Manager
  Console,检查数据库表空间的使用情况。包括创建表空间,向表空间中添加数据文件。随着数据表和索引的增长监控空闲空间,当表空间利用率超过85%以上时,通过扩充数据文件的方法扩大数据库相应的表空间。
  (2)表空间空闲块的维护。数据库运行了一段时间后,由于不断地在表空间上创建和删除对象,会在表空间上产生大量的碎片,这时要检查表空间的碎片和可用空间情况,决定是否要对碎片进行整理或为表空间增加数据文件。
  (3)共享池的维护。通过Oracle数据库提供的Oracle En-terprise Manager
  Console,检查可用共享池的使用情况,当可用百分比小于6%,业务处理速度会变慢,如单程票初始化机的处理速度会下降,这时需要通过刷新共享池的方法提高可用率。
  2.3数据库备份
  为确保AFC系统数据完整,深圳地铁制定了相应的备份策略,严格做好数据库备份工作。备份的数据为中心数据库信息、中心RMAN数据库信息、TSM数据库信息、车站数据库信息。备份介质有明确标识,分类保管。
  中心数据库采用Tivoli软件自动备份,备份介质为IBM
  LTO磁带,备份内容为全备份、增量备份和归档日志备份,全备份每周进行一次,增量备份和归档日志备份每天进行1次。
  中心RMAN数据库采用UNIX脚本自动备份,中心TSM数据库采用Tivoli软件自动备份,将一周的备份文件刻录至光盘保存。
  车站数据库备份采用ORACLE逻辑备份(通过EXP命令),在车站服务器和车站监控机上双机互备。
  3 数据库的优化
  Oracle数据库的性能优化一直是数据库管理中的重要环节,也是最复杂的内容之一。从数据库技术角度而言,数据库建立起来后,主要的工作内容有:优化、恢复和备份。要实现高效地运行Oracle数据库,优化性能至少占了70%的工作量,主要包括优化工具、存储优化、内存调整、SQL优化等多个方面。主要工作包括如下几个部分。
  (1)调整数据结构的设计。主要针对Oracle数据库的分区功能,对于经常访问的数据库表建立索引等。在数据库的表空间划分上 ,每个月占用一个独立的分区,每个分区占用一个表空间,一个分区又由多个数据文件组成,对索引的建立也是按月来分配的。
  (2)调整应用程序结构设计。这一部分也是在深圳地铁AFC应用系统设计之前完成,深圳地铁AFC应用系统采用Client/Server体系结构,由数据库应用程序快速开发工具PowerBulider8设计开发完成。
  (3)调整数据库SQL语句。我们使用Oracle语句优化器(Oracle Optimizer)和行锁管理器(
  Row-level Manager)来调整优化SQL语句。
  (4)调整AFC中央主机内存分配。内存分配是在主机运行过程中优化配置的,主机根据数据库运行状况调整数据库系统全局区(SGA)的数据缓冲区、日志缓冲区和共享池的大小,还可以调整程序全局区(PGA)的大小。系统全局区(SGA)是Oracle数据库的心脏,需要注意的是,SGA区不是越大越好,SGA区过大会占用操作系统使用的内存而引起虚拟内存的页面交换,这样反而会降低系统性能。
  (5)调整硬盘I/O。将组成同一个表空间的数据文件放在不同的硬盘上,做到硬盘之间I/O负载均衡。
  (6)调整操作系统

参数.Oracle数据库服务器是整个系统的核心,它的性能高低直接影响整个系统的性能。深圳地铁AFC系统主机运行在Unix操作系统之上,尽可能使Oracle使用资源最大化,需调整Unix数据缓冲池的大小、每个进程所能使用的内存大小等参数。
  深圳地铁AFC系统数据库备份管理方面,除了做日常维护备份外,在数据库运作过程中,我们还通过调整分区,对经常访问的数据库表建立索引,以及对业务流程完成后不再变动的数据采用归档的方法来优化数据库。
  4 数据库应用探索
  (1)应用数据库结构设计应充分考虑通用性和易用性。着眼于深圳轨道交通发展一体化的长远眼光,深圳地铁AFC系统数据库从设计之初,几个基本的数据库表就采用和深圳通公司(现为“深圳通结算中心”,将发展为深圳城市“一卡通”的清分和结算中心)数据库相同的数据类型划分和表的设计。就当时的情况而言,满足了地铁与“深圳通”数据互通和结算的基本要求,为实现深圳“一卡通”奠定了根基。现在,深圳地铁AFC系统的数据已能够通过和“深圳通”连接的帧中继专线进行数据交换,为“深圳通”在多家运营商之间清分、结算提供数据保证。
  (2)从数据库系统主机的安全工作角度,提高数据库的安全性和容灾性。AFC系统的“生命线”就是数据库的安全和数据的完整。深圳地铁AFC系统除了做好数据库冷、热备份外,在保证数据库系统主机安全运作,容灾备份方面,我们采用2台IBM
  P650小型机做主机互备,以及RAIDS冗余磁盘阵列体系。除此之外,还新增1台IBM
  P520小型机,专门用做2台AFC系统主机的备用机。在非常必要之时,这台小型机可顶替AFC系统主机工作。
  (3)对表和索引做定期的维护优化,大表建立分区功能。将大表的历史数据按年份归档,以腾出足够的空间供数据库服务器连续使用。现在,我们已成功完成了2005年数据的归档工作,将深圳地铁AFC系统2005年全年的数据导出到AFC主机的备机之上,使AFC系统主机上的硬盘空间得以重用,提升了主机和数据库系统性能。
  当数据库建立索引后,增加数据时,也会增加索引数据,但是删除数据时,数据库不会自动删除该记录的索引数据。所以对于插人删除比较频繁的表,如果使用一段时间后,索引数据中存在着很多无效的数据,这样会影响系统的性能。对于这种类型的表,我们要定期重建索引,提高索引的利用率。
  对交易数据、索引等大表建立分区表,按月进行数据划分。每个月数据库自动生成并调用一个分区表,整个月的数据占用独立的分区表,这样从优化数据库结构、提高数据库访问速度、便于管理、方便维护等角度来看都是可圈可点的。
  (4)充分利用数据库具有的高级功能,如Oracle的数据库链接、同义词、高级复制等。在Oracle数据库应用系统中,常常需要在各个数据库之前进行数据的传输和同步,有时也需要对某些表的数据进行集中管理。这样我们就可以充分利用数据库的一些功能。如果需要服务器间同步数据时,可以利用数据库的高级复制功能。如果需要将某些表进行集中管理,则可以使用数据库连接和同义词,将表存储到某一数据库,其余数据库利用同义词远程访问列表。
  (5)定期分析数据库负荷,优化消耗系统资源大的SQL语句。随着深圳地铁客流量的不断增多,数据库数据量也同比增大,每天数据库新增近46万笔数据,数据库的负荷增加,数据库系统的性能问题就越来越突出。为此,我们分析了数据库的负荷情况,发现瓶颈出现在系统I/O上,而对系统I/O“贡献’最大的当属SQL语句。我们对一些性能相对低下、消耗系统资源大的SQL语句作优化调整,权衡响应时间和吞吐量之间的关系,尽可能减少磁盘获 取所需要数据的时间,达到了降低系统I/O的目的。
  (6)对于安装RAC的数据库系统,应充分利用负载均衡功能。深圳地铁一期的18个车站计算机系统都安装有Oracle服务器端。在这些服务器上,如果不配置RAC使用负载均衡,就有可能使某台服务器处于繁忙状态,而另一台则一直在空闲中。这样不但影响系统性能,而且也是系统安全的一个隐患。我们通过RAC配置服务器自动使用负载均衡,来解决服务器间忙与不忙的问题。另外,对于某些个别的连接也可以手工指定使用的服务器。
  5 结束语
  从深圳地铁开通前AFC系统数据库投人使用,到现在耐年多的时间里,AFC系统信息管理部门深入分析AFC系统的实际运行情况和特点,建立和健全规章制度和强化执行力度,总结出一套行之有效的数据库应用和优化的办法,AFC系统数据库系统一直稳定运行,保持“零”宕机的记录。
  参考文献
  1.简炼.深川地铁智能收费承统国产化创新,现代城市软道交通,2005 (5)
  2.萨师煊.数据库系统棍论.北京:高等教育出版社,2000
  3.Hector Carcia-Molina, Jeffrey D.,Ullman Jennifer
  Wi
dom.数据库系统实现,北京:机械工业出版社,2002
  4.王伦文,钟子发,张炙.ORACLE数据库设计优化与实践.电讯技术,2001(1)
  5.杨德仁,马晓燕.大型数据库优化设计方案.计算机系统应用,2001 (5)

 
  
  
  
  
 
更多>同类技术
 
全年征稿 / 资讯合作
 
推荐图文
推荐技术
可能喜欢