铁路客票系统数据库健康保障技术研究

2014-10-10 07:28刘秉旺吴建芳
铁路计算机应用 2014年5期
关键词:客票触发器数据表

刘秉旺,吴建芳

(1.北京铁路局 信息技术所,北京 100860;2.北京铁路局 信息化处,北京 100860)

铁路客票系统数据库健康保障技术研究

刘秉旺1,吴建芳2

(1.北京铁路局 信息技术所,北京 100860;2.北京铁路局 信息化处,北京 100860)

客票系统核心数据库是整个客票系统高效、稳定、安全运行的关键。本文分析客票系统运行中Sybase数据库可能出现的问题及产生原因,详细论述保障数据库健康运行的“在线”数据库一致性检查、数据库碎片整理等多项技术和实现方法。

数据库;健康保障技术;客票系统

铁路客运随着互联网购票、手机购票、电话订票、自动售票机、移动售票车等一系列便民利民措施的实施,极大地改善了广大旅客的购票体验。保证购票体验良好的基础是客票核心数据库的高效、稳定与安全运行。

客票系统核心数据库基于Sybase数据库技术,负责席位管理、实时交易管理、结账统计等客运业务的数据记录与管理工作,其主要特点是数据量大、变化频繁、并发性强、24 h不间断运行。针对客票系统数据库存在产生碎片多,数据表有可能损坏而无法正常使用,数据增长迅速不及时清理严重影响应用效果等情况,迫切需要深入研究数据库健康保障技术,确保客票系统核心数据库安全、稳定、高效运行,为客运业务有序开展提供有力技术支撑。

1 实现目标

通过技术手段,有效解决数据库碎片、数据库逻辑错误、数据库性能下降等问题,保障客票系统数据库健康、高效。

2 技术指标

(1)实现客票系统在线数据库一致性检查;(2)通过研究客票系统数据表的使用情况,分别制定行级锁数据表、页级锁数据表的碎片整理策略;(3)制定数据库统计值更新策略;(4)制定重新编译存储过程执行计划策略;(5)通过研究客票数据使用状况,制定过期数据清理方案,实现数据的自动备份与清理。

3 数据库健康保障技术

3.1 “在线”数据库一致性检查

数据库的一致性,是指数据库内部结构中物理与逻辑上的一致性,数据库一致性检查就是对数据库的页链、分配页和存储对象分配表(OAM)页等内部结构进行检查,检查这些内部结构是否正确、没有被损坏的,能够正确无误的查找到所需的数据。

若在一致性检查中发现了错误,Adaptive server会提示相应的出错信息。系统管理员可以通过分析出错信息并及时采用恰当的方法对错误进行修复,避免或减少数据库内部结构的不一致导致的数据损坏。

对数据库进行一致性检查是Sybase系统管理员日常维护工作的重要组成部分,是维护数据库内部完整性的重要手段。数据库一致性检查包括数据库和表的一致性检查、页的分配检查、系统表的一致性检查。当进行常规的数据库维护工作时,通过数据库一致性检查能够在错误影响到用户使用之前发现并更正。

每年重要节假日前,如“五一”、“十一”、“春运”前,都要进行主动式数据库一致性检查,确保数据库以健康的状态迎接售票高峰的到来。

客票系统数据量巨大,如客票主用中心生产数据库总量为520 G,完成数据库一致性检查约需要26 h。由于一致性检查需要占用系统资源,对系统性能有负面影响,而客票系统没有如此长的空闲时间,必须在不影响客票系统正常运行的情况下完成此项工作,即实现“在线”数据库一致性检查。

若想做到“在线”数据库一致性检查,即在客票系统连续运行的情况下,完成数据库一致性检查,必须可以随时得到一个与现有生产数据库完全一样的镜像数据库,通过对镜像数据库进行一致性检查,来发现生产数据库的安全隐患,进而对生产数据库进行及时的修复工作。

3.1.1 客票系统智能存储的分配策略

按照“在线”数据库一致性检查需求,研究客票系统的HDS智能存储的分配策略。(1)对4块物理盘进行RAID组的划分;(2)在RAID组内实现RAID1,通过磁盘数据镜像,实现数据冗余,在成对的独立磁盘上产生互为备份的数据,提高数据安全性和可用性;(3)在RAID组间实现磁盘条带化设计,提高生产数据的并发处理性能;(4)设计了独立的生产卷组、镜像卷组,分别部署在不同的磁盘组上,使得镜像卷组的使用不影响生产卷组的性能。

3.1.2 利用shadowimage技术,实现“在线”数据库一致性检查

HDS智能存储的shadowimage技术,可以实现生产卷组与镜像卷组数据的实时同步,且能够随时终止同步机制。基于shadowimage技术,利用镜像卷组即可实现“在线”数据库一致性检查。步骤如下:

(1)终止生产卷组与镜像卷组的数据同步机制。

(5)根据数据库一致性检查的结果,制定数据库修复策略,在备份数据库上进行修复测试,测试修复步骤及结果。

(6)关闭镜像数据库,卸载卷组。

(8)在天窗时间,按照修复步骤对生产数据库进行修复,消除安全隐患。

通过shadowimage技术,实现了“在线”数据库一致性检查。曾经在数据库检查时,及时发现了数据索引表的数据不一致问题,并及时对生产库进行了修复,消除了客票系统的安全隐患。

3.2 数据库碎片整理

由于客票系统7×24 h不间断运行,应用程序每天对数据库进行大量的插入、删除、修改等操作,在数据库的物理存储介质上产生了大量的存储碎片,影响了存储的效率及数据库应用运行的速度。数据在存储空间上排列得越紧密有序,Database Server 访问的速度就越快,消除碎片有助于提高系统的性能和更有效地利用数据存储空间。因此应定期进行数据库的碎片整理,使数据库处于性能高效的状态。

Sybase数据表分为行锁数据表(Lock scheme Datarows)和页锁数据表(Lock scheme Allpages)。客票系统中根据业务需要,对变化频繁、并发性高的表如席位表(seat_area),建为行锁表,对相对变化少的表如窗口定义表(B_window_define),建为页锁表。针对以上2种类型的表,采取了不同的数据库碎片整理策略:

(1)利用凌晨客票系统相对空闲的时间,每天进行所有行锁数据表索引的碎片整理。

例如:reorg rebuild return_record return_record_idx1

(2)利用维护天窗时间,进行行锁数据表分区及页锁表的碎片整理。针对页锁数据表,建立聚簇索引后删除,从而达到消除碎片的目的。

例如:

3.3 统计值更新

精确的统计信息对于查询优化至关重要。Adaptive Server基于开销的优化程序利用查询中所指定表、索引以及列等有关统计信息来估计查询开销。它选择优化程序确定的开销最低的访问方法。

但是当统计信息不精确时,开销估计就可能会不准确。有些统计信息(例如页数或表的行数)在查询处理过程中会被更新。其它统计值,例如列中的直方图,仅当运行update statistics命令或者创建索引时更新。应用系统执行查询速度慢的问题,大多与统计值更新有关。Adaptive Server的优化程序使用数据库上的统计信息来设置和优化查询,这些统计信息必须是最新的统计信息,以便可以生成最佳结果。对数据集(例如表)运行update statistics命令,以便为索引中的所有列或表中的所有列更新指定索引或列中有关键值分布的信息。此命令可修正列级统计信息的直方图和密度值。优化程序将在稍后使用这些结构来计算设置查询计划的最佳方式。Update statistics命令会更新直方图和密度这样的与列相关的统计信息。因此,当索引中的键值分布改变会影响查询应用的索引时,就需要对这些列中的统计信息进行更新。用update index statistics更新所有索引列的统计信息,保持最新的统计信息,从而生成高效的查询计划。

运行update index statistics命令将占用系统资源。通过对客票系统应用数据分析研究,确定采用利用每日凌晨客票系统相对业务空闲时间,对生产库和基础数据库中所有索引列的统计信息进行一次更新,使客票系统查询速度始终保持在高速状态,

3.4 重新编译存储过程与触发器

存储过程和触发器是在创建时编译的,过程引用一个对象时,使用的是对象的Object ID,而非表名。对于存储过程和触发器使用的查询,仅在对存储过程和触发器进行编译时优化一次。随着在数据库中添加索引或进行其它可能会影响其统计信息的更改,编译的存储过程和触发器的效率可能会逐渐下降。通过重新编译对表进行操作的存储过程和触发器可以优化查询以获得最高效率。sp_recompile可以导致使用指定表的存储过程和触发器在下次运行时重新编译,优化用于访问其表的初始查询计划,从而确保客票系统保持高效运行状态。

3.5 数据自动备份与清理

数据表的存储数据无限制的增长,会导致系统处理性能下降。在全面分析了客票系统生产数据和基础数据的变化、使用情况后,根据实际业务需要,制定了详细的数据自动备份与清理策略,逐一设定了数据保留时间、数据备份方式、数据清理方式,每日自动进行过期数据清理与备份工作,为生产数据库减负,以最小的数据集支撑生产,保证了生产数据库的精干与高效运行。

4 结束语

北京铁路局已将该技术应用在铁路局中心、北京联合站、天津联合站、石家庄联合站的客票数据库服务器上,每日进行统计值更新、行级锁数据表的碎片整理和过期数据备份与清理,每月进行存储过程和触发器重新编译,定期进行数据库一致性检查、页级锁数据表的碎片整理及分区碎片整理。多种数据库健康保障技术的综合运用,有效保障了客票核心数据库的高效、安全、稳定运行,取得了良好的效果。

责任编辑 方 圆

Research on database health security technology of Ticketing and Reservation System

LIU Bingwang1, WU Jianfang2
( 1. Institute of Information Technology, Beijing Railway Administration, Beijing 100860, China;2.Information Technology Department, Beijing Railway Administration, Beijing 100860, China )

The database was the key to Ticketing and Reservation System (TRS) running ef fi ciently and stably and safely. This paper analyzed the causes of possible problems for Sybase database in the running process of TRS. A number of technology and implementation methods were discussed for Sybase database healthy security, such as the “online” database consistency checking, database defragmentation technology and so on.

database; healthy security technology; Ticketing and Reservation System (TRS)

U293.22∶TP39

A

1005-8451(2014)05-0021-04

2014-01-25

刘秉旺,高级工程师;吴建芳 ,教授级高级工程师。

猜你喜欢
客票触发器数据表
浅谈时序逻辑电路的成长记忆
湖北省新冠肺炎疫情数据表(2.26-3.25)
湖北省新冠肺炎疫情数据表
中国铁路客票在跨境客运中的互通方案
基于列控工程数据表建立线路拓扑关系的研究
触发器在酒店管理系统中的应用
航空公司客票直销的现状与分析
基于大数据的客票超售策略
图表
几种常见触发器工作方式的讨论