劉秉旺,吳建芳
(1.北京鐵路局 信息技術(shù)所,北京 100860;2.北京鐵路局 信息化處,北京 100860)
鐵路客票系統(tǒng)數(shù)據(jù)庫健康保障技術(shù)研究
劉秉旺1,吳建芳2
(1.北京鐵路局 信息技術(shù)所,北京 100860;2.北京鐵路局 信息化處,北京 100860)
客票系統(tǒng)核心數(shù)據(jù)庫是整個(gè)客票系統(tǒng)高效、穩(wěn)定、安全運(yùn)行的關(guān)鍵。本文分析客票系統(tǒng)運(yùn)行中Sybase數(shù)據(jù)庫可能出現(xiàn)的問題及產(chǎn)生原因,詳細(xì)論述保障數(shù)據(jù)庫健康運(yùn)行的“在線”數(shù)據(jù)庫一致性檢查、數(shù)據(jù)庫碎片整理等多項(xiàng)技術(shù)和實(shí)現(xiàn)方法。
數(shù)據(jù)庫;健康保障技術(shù);客票系統(tǒng)
鐵路客運(yùn)隨著互聯(lián)網(wǎng)購票、手機(jī)購票、電話訂票、自動(dòng)售票機(jī)、移動(dòng)售票車等一系列便民利民措施的實(shí)施,極大地改善了廣大旅客的購票體驗(yàn)。保證購票體驗(yàn)良好的基礎(chǔ)是客票核心數(shù)據(jù)庫的高效、穩(wěn)定與安全運(yùn)行。
客票系統(tǒng)核心數(shù)據(jù)庫基于Sybase數(shù)據(jù)庫技術(shù),負(fù)責(zé)席位管理、實(shí)時(shí)交易管理、結(jié)賬統(tǒng)計(jì)等客運(yùn)業(yè)務(wù)的數(shù)據(jù)記錄與管理工作,其主要特點(diǎn)是數(shù)據(jù)量大、變化頻繁、并發(fā)性強(qiáng)、24 h不間斷運(yùn)行。針對(duì)客票系統(tǒng)數(shù)據(jù)庫存在產(chǎn)生碎片多,數(shù)據(jù)表有可能損壞而無法正常使用,數(shù)據(jù)增長迅速不及時(shí)清理嚴(yán)重影響應(yīng)用效果等情況,迫切需要深入研究數(shù)據(jù)庫健康保障技術(shù),確??推毕到y(tǒng)核心數(shù)據(jù)庫安全、穩(wěn)定、高效運(yùn)行,為客運(yùn)業(yè)務(wù)有序開展提供有力技術(shù)支撐。
通過技術(shù)手段,有效解決數(shù)據(jù)庫碎片、數(shù)據(jù)庫邏輯錯(cuò)誤、數(shù)據(jù)庫性能下降等問題,保障客票系統(tǒng)數(shù)據(jù)庫健康、高效。
(1)實(shí)現(xiàn)客票系統(tǒng)在線數(shù)據(jù)庫一致性檢查;(2)通過研究客票系統(tǒng)數(shù)據(jù)表的使用情況,分別制定行級(jí)鎖數(shù)據(jù)表、頁級(jí)鎖數(shù)據(jù)表的碎片整理策略;(3)制定數(shù)據(jù)庫統(tǒng)計(jì)值更新策略;(4)制定重新編譯存儲(chǔ)過程執(zhí)行計(jì)劃策略;(5)通過研究客票數(shù)據(jù)使用狀況,制定過期數(shù)據(jù)清理方案,實(shí)現(xiàn)數(shù)據(jù)的自動(dòng)備份與清理。
3.1 “在線”數(shù)據(jù)庫一致性檢查
數(shù)據(jù)庫的一致性,是指數(shù)據(jù)庫內(nèi)部結(jié)構(gòu)中物理與邏輯上的一致性,數(shù)據(jù)庫一致性檢查就是對(duì)數(shù)據(jù)庫的頁鏈、分配頁和存儲(chǔ)對(duì)象分配表(OAM)頁等內(nèi)部結(jié)構(gòu)進(jìn)行檢查,檢查這些內(nèi)部結(jié)構(gòu)是否正確、沒有被損壞的,能夠正確無誤的查找到所需的數(shù)據(jù)。
若在一致性檢查中發(fā)現(xiàn)了錯(cuò)誤,Adaptive server會(huì)提示相應(yīng)的出錯(cuò)信息。系統(tǒng)管理員可以通過分析出錯(cuò)信息并及時(shí)采用恰當(dāng)?shù)姆椒▽?duì)錯(cuò)誤進(jìn)行修復(fù),避免或減少數(shù)據(jù)庫內(nèi)部結(jié)構(gòu)的不一致導(dǎo)致的數(shù)據(jù)損壞。
對(duì)數(shù)據(jù)庫進(jìn)行一致性檢查是Sybase系統(tǒng)管理員日常維護(hù)工作的重要組成部分,是維護(hù)數(shù)據(jù)庫內(nèi)部完整性的重要手段。數(shù)據(jù)庫一致性檢查包括數(shù)據(jù)庫和表的一致性檢查、頁的分配檢查、系統(tǒng)表的一致性檢查。當(dāng)進(jìn)行常規(guī)的數(shù)據(jù)庫維護(hù)工作時(shí),通過數(shù)據(jù)庫一致性檢查能夠在錯(cuò)誤影響到用戶使用之前發(fā)現(xiàn)并更正。
每年重要節(jié)假日前,如“五一”、“十一”、“春運(yùn)”前,都要進(jìn)行主動(dòng)式數(shù)據(jù)庫一致性檢查,確保數(shù)據(jù)庫以健康的狀態(tài)迎接售票高峰的到來。
客票系統(tǒng)數(shù)據(jù)量巨大,如客票主用中心生產(chǎn)數(shù)據(jù)庫總量為520 G,完成數(shù)據(jù)庫一致性檢查約需要26 h。由于一致性檢查需要占用系統(tǒng)資源,對(duì)系統(tǒng)性能有負(fù)面影響,而客票系統(tǒng)沒有如此長的空閑時(shí)間,必須在不影響客票系統(tǒng)正常運(yùn)行的情況下完成此項(xiàng)工作,即實(shí)現(xiàn)“在線”數(shù)據(jù)庫一致性檢查。
若想做到“在線”數(shù)據(jù)庫一致性檢查,即在客票系統(tǒng)連續(xù)運(yùn)行的情況下,完成數(shù)據(jù)庫一致性檢查,必須可以隨時(shí)得到一個(gè)與現(xiàn)有生產(chǎn)數(shù)據(jù)庫完全一樣的鏡像數(shù)據(jù)庫,通過對(duì)鏡像數(shù)據(jù)庫進(jìn)行一致性檢查,來發(fā)現(xiàn)生產(chǎn)數(shù)據(jù)庫的安全隱患,進(jìn)而對(duì)生產(chǎn)數(shù)據(jù)庫進(jìn)行及時(shí)的修復(fù)工作。
3.1.1 客票系統(tǒng)智能存儲(chǔ)的分配策略
按照“在線”數(shù)據(jù)庫一致性檢查需求,研究客票系統(tǒng)的HDS智能存儲(chǔ)的分配策略。(1)對(duì)4塊物理盤進(jìn)行RAID組的劃分;(2)在RAID組內(nèi)實(shí)現(xiàn)RAID1,通過磁盤數(shù)據(jù)鏡像,實(shí)現(xiàn)數(shù)據(jù)冗余,在成對(duì)的獨(dú)立磁盤上產(chǎn)生互為備份的數(shù)據(jù),提高數(shù)據(jù)安全性和可用性;(3)在RAID組間實(shí)現(xiàn)磁盤條帶化設(shè)計(jì),提高生產(chǎn)數(shù)據(jù)的并發(fā)處理性能;(4)設(shè)計(jì)了獨(dú)立的生產(chǎn)卷組、鏡像卷組,分別部署在不同的磁盤組上,使得鏡像卷組的使用不影響生產(chǎn)卷組的性能。
3.1.2 利用shadowimage技術(shù),實(shí)現(xiàn)“在線”數(shù)據(jù)庫一致性檢查
HDS智能存儲(chǔ)的shadowimage技術(shù),可以實(shí)現(xiàn)生產(chǎn)卷組與鏡像卷組數(shù)據(jù)的實(shí)時(shí)同步,且能夠隨時(shí)終止同步機(jī)制?;趕hadowimage技術(shù),利用鏡像卷組即可實(shí)現(xiàn)“在線”數(shù)據(jù)庫一致性檢查。步驟如下:
(1)終止生產(chǎn)卷組與鏡像卷組的數(shù)據(jù)同步機(jī)制。
(5)根據(jù)數(shù)據(jù)庫一致性檢查的結(jié)果,制定數(shù)據(jù)庫修復(fù)策略,在備份數(shù)據(jù)庫上進(jìn)行修復(fù)測(cè)試,測(cè)試修復(fù)步驟及結(jié)果。
(6)關(guān)閉鏡像數(shù)據(jù)庫,卸載卷組。
(8)在天窗時(shí)間,按照修復(fù)步驟對(duì)生產(chǎn)數(shù)據(jù)庫進(jìn)行修復(fù),消除安全隱患。
通過shadowimage技術(shù),實(shí)現(xiàn)了“在線”數(shù)據(jù)庫一致性檢查。曾經(jīng)在數(shù)據(jù)庫檢查時(shí),及時(shí)發(fā)現(xiàn)了數(shù)據(jù)索引表的數(shù)據(jù)不一致問題,并及時(shí)對(duì)生產(chǎn)庫進(jìn)行了修復(fù),消除了客票系統(tǒng)的安全隱患。
3.2 數(shù)據(jù)庫碎片整理
由于客票系統(tǒng)7×24 h不間斷運(yùn)行,應(yīng)用程序每天對(duì)數(shù)據(jù)庫進(jìn)行大量的插入、刪除、修改等操作,在數(shù)據(jù)庫的物理存儲(chǔ)介質(zhì)上產(chǎn)生了大量的存儲(chǔ)碎片,影響了存儲(chǔ)的效率及數(shù)據(jù)庫應(yīng)用運(yùn)行的速度。數(shù)據(jù)在存儲(chǔ)空間上排列得越緊密有序,Database Server 訪問的速度就越快,消除碎片有助于提高系統(tǒng)的性能和更有效地利用數(shù)據(jù)存儲(chǔ)空間。因此應(yīng)定期進(jìn)行數(shù)據(jù)庫的碎片整理,使數(shù)據(jù)庫處于性能高效的狀態(tài)。
Sybase數(shù)據(jù)表分為行鎖數(shù)據(jù)表(Lock scheme Datarows)和頁鎖數(shù)據(jù)表(Lock scheme Allpages)??推毕到y(tǒng)中根據(jù)業(yè)務(wù)需要,對(duì)變化頻繁、并發(fā)性高的表如席位表(seat_area),建為行鎖表,對(duì)相對(duì)變化少的表如窗口定義表(B_window_define),建為頁鎖表。針對(duì)以上2種類型的表,采取了不同的數(shù)據(jù)庫碎片整理策略:
(1)利用凌晨客票系統(tǒng)相對(duì)空閑的時(shí)間,每天進(jìn)行所有行鎖數(shù)據(jù)表索引的碎片整理。
例如:reorg rebuild return_record return_record_idx1
(2)利用維護(hù)天窗時(shí)間,進(jìn)行行鎖數(shù)據(jù)表分區(qū)及頁鎖表的碎片整理。針對(duì)頁鎖數(shù)據(jù)表,建立聚簇索引后刪除,從而達(dá)到消除碎片的目的。
例如:
3.3 統(tǒng)計(jì)值更新
精確的統(tǒng)計(jì)信息對(duì)于查詢優(yōu)化至關(guān)重要。Adaptive Server基于開銷的優(yōu)化程序利用查詢中所指定表、索引以及列等有關(guān)統(tǒng)計(jì)信息來估計(jì)查詢開銷。它選擇優(yōu)化程序確定的開銷最低的訪問方法。
但是當(dāng)統(tǒng)計(jì)信息不精確時(shí),開銷估計(jì)就可能會(huì)不準(zhǔn)確。有些統(tǒng)計(jì)信息(例如頁數(shù)或表的行數(shù))在查詢處理過程中會(huì)被更新。其它統(tǒng)計(jì)值,例如列中的直方圖,僅當(dāng)運(yùn)行update statistics命令或者創(chuàng)建索引時(shí)更新。應(yīng)用系統(tǒng)執(zhí)行查詢速度慢的問題,大多與統(tǒng)計(jì)值更新有關(guān)。Adaptive Server的優(yōu)化程序使用數(shù)據(jù)庫上的統(tǒng)計(jì)信息來設(shè)置和優(yōu)化查詢,這些統(tǒng)計(jì)信息必須是最新的統(tǒng)計(jì)信息,以便可以生成最佳結(jié)果。對(duì)數(shù)據(jù)集(例如表)運(yùn)行update statistics命令,以便為索引中的所有列或表中的所有列更新指定索引或列中有關(guān)鍵值分布的信息。此命令可修正列級(jí)統(tǒng)計(jì)信息的直方圖和密度值。優(yōu)化程序?qū)⒃谏院笫褂眠@些結(jié)構(gòu)來計(jì)算設(shè)置查詢計(jì)劃的最佳方式。Update statistics命令會(huì)更新直方圖和密度這樣的與列相關(guān)的統(tǒng)計(jì)信息。因此,當(dāng)索引中的鍵值分布改變會(huì)影響查詢應(yīng)用的索引時(shí),就需要對(duì)這些列中的統(tǒng)計(jì)信息進(jìn)行更新。用update index statistics更新所有索引列的統(tǒng)計(jì)信息,保持最新的統(tǒng)計(jì)信息,從而生成高效的查詢計(jì)劃。
運(yùn)行update index statistics命令將占用系統(tǒng)資源。通過對(duì)客票系統(tǒng)應(yīng)用數(shù)據(jù)分析研究,確定采用利用每日凌晨客票系統(tǒng)相對(duì)業(yè)務(wù)空閑時(shí)間,對(duì)生產(chǎn)庫和基礎(chǔ)數(shù)據(jù)庫中所有索引列的統(tǒng)計(jì)信息進(jìn)行一次更新,使客票系統(tǒng)查詢速度始終保持在高速狀態(tài),
3.4 重新編譯存儲(chǔ)過程與觸發(fā)器
存儲(chǔ)過程和觸發(fā)器是在創(chuàng)建時(shí)編譯的,過程引用一個(gè)對(duì)象時(shí),使用的是對(duì)象的Object ID,而非表名。對(duì)于存儲(chǔ)過程和觸發(fā)器使用的查詢,僅在對(duì)存儲(chǔ)過程和觸發(fā)器進(jìn)行編譯時(shí)優(yōu)化一次。隨著在數(shù)據(jù)庫中添加索引或進(jìn)行其它可能會(huì)影響其統(tǒng)計(jì)信息的更改,編譯的存儲(chǔ)過程和觸發(fā)器的效率可能會(huì)逐漸下降。通過重新編譯對(duì)表進(jìn)行操作的存儲(chǔ)過程和觸發(fā)器可以優(yōu)化查詢以獲得最高效率。sp_recompile可以導(dǎo)致使用指定表的存儲(chǔ)過程和觸發(fā)器在下次運(yùn)行時(shí)重新編譯,優(yōu)化用于訪問其表的初始查詢計(jì)劃,從而確??推毕到y(tǒng)保持高效運(yùn)行狀態(tài)。
3.5 數(shù)據(jù)自動(dòng)備份與清理
數(shù)據(jù)表的存儲(chǔ)數(shù)據(jù)無限制的增長,會(huì)導(dǎo)致系統(tǒng)處理性能下降。在全面分析了客票系統(tǒng)生產(chǎn)數(shù)據(jù)和基礎(chǔ)數(shù)據(jù)的變化、使用情況后,根據(jù)實(shí)際業(yè)務(wù)需要,制定了詳細(xì)的數(shù)據(jù)自動(dòng)備份與清理策略,逐一設(shè)定了數(shù)據(jù)保留時(shí)間、數(shù)據(jù)備份方式、數(shù)據(jù)清理方式,每日自動(dòng)進(jìn)行過期數(shù)據(jù)清理與備份工作,為生產(chǎn)數(shù)據(jù)庫減負(fù),以最小的數(shù)據(jù)集支撐生產(chǎn),保證了生產(chǎn)數(shù)據(jù)庫的精干與高效運(yùn)行。
北京鐵路局已將該技術(shù)應(yīng)用在鐵路局中心、北京聯(lián)合站、天津聯(lián)合站、石家莊聯(lián)合站的客票數(shù)據(jù)庫服務(wù)器上,每日進(jìn)行統(tǒng)計(jì)值更新、行級(jí)鎖數(shù)據(jù)表的碎片整理和過期數(shù)據(jù)備份與清理,每月進(jìn)行存儲(chǔ)過程和觸發(fā)器重新編譯,定期進(jìn)行數(shù)據(jù)庫一致性檢查、頁級(jí)鎖數(shù)據(jù)表的碎片整理及分區(qū)碎片整理。多種數(shù)據(jù)庫健康保障技術(shù)的綜合運(yùn)用,有效保障了客票核心數(shù)據(jù)庫的高效、安全、穩(wěn)定運(yùn)行,取得了良好的效果。
責(zé)任編輯 方 圓
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
劉秉旺,高級(jí)工程師;吳建芳 ,教授級(jí)高級(jí)工程師。