劉秉旺,吳建芳
(1.北京鐵路局 信息技術所,北京 100860;2.北京鐵路局 信息化處,北京 100860)
鐵路客票系統數據庫健康保障技術研究
劉秉旺1,吳建芳2
(1.北京鐵路局 信息技術所,北京 100860;2.北京鐵路局 信息化處,北京 100860)
客票系統核心數據庫是整個客票系統高效、穩定、安全運行的關鍵。本文分析客票系統運行中Sybase數據庫可能出現的問題及產生原因,詳細論述保障數據庫健康運行的“在線”數據庫一致性檢查、數據庫碎片整理等多項技術和實現方法。
數據庫;健康保障技術;客票系統
鐵路客運隨著互聯網購票、手機購票、電話訂票、自動售票機、移動售票車等一系列便民利民措施的實施,極大地改善了廣大旅客的購票體驗。保證購票體驗良好的基礎是客票核心數據庫的高效、穩定與安全運行。
客票系統核心數據庫基于Sybase數據庫技術,負責席位管理、實時交易管理、結賬統計等客運業務的數據記錄與管理工作,其主要特點是數據量大、變化頻繁、并發性強、24 h不間斷運行。針對客票系統數據庫存在產生碎片多,數據表有可能損壞而無法正常使用,數據增長迅速不及時清理嚴重影響應用效果等情況,迫切需要深入研究數據庫健康保障技術,確保客票系統核心數據庫安全、穩定、高效運行,為客運業務有序開展提供有力技術支撐。
通過技術手段,有效解決數據庫碎片、數據庫邏輯錯誤、數據庫性能下降等問題,保障客票系統數據庫健康、高效。
(1)實現客票系統在線數據庫一致性檢查;(2)通過研究客票系統數據表的使用情況,分別制定行級鎖數據表、頁級鎖數據表的碎片整理策略;(3)制定數據庫統計值更新策略;(4)制定重新編譯存儲過程執行計劃策略;(5)通過研究客票數據使用狀況,制定過期數據清理方案,實現數據的自動備份與清理。
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技術,可以實現生產卷組與鏡像卷組數據的實時同步,且能夠隨時終止同步機制?;趕hadowimage技術,利用鏡像卷組即可實現“在線”數據庫一致性檢查。步驟如下:
(1)終止生產卷組與鏡像卷組的數據同步機制。
(5)根據數據庫一致性檢查的結果,制定數據庫修復策略,在備份數據庫上進行修復測試,測試修復步驟及結果。
(6)關閉鏡像數據庫,卸載卷組。

(8)在天窗時間,按照修復步驟對生產數據庫進行修復,消除安全隱患。
通過shadowimage技術,實現了“在線”數據庫一致性檢查。曾經在數據庫檢查時,及時發現了數據索引表的數據不一致問題,并及時對生產庫進行了修復,消除了客票系統的安全隱患。
3.2 數據庫碎片整理
由于客票系統7×24 h不間斷運行,應用程序每天對數據庫進行大量的插入、刪除、修改等操作,在數據庫的物理存儲介質上產生了大量的存儲碎片,影響了存儲的效率及數據庫應用運行的速度。數據在存儲空間上排列得越緊密有序,Database Server 訪問的速度就越快,消除碎片有助于提高系統的性能和更有效地利用數據存儲空間。因此應定期進行數據庫的碎片整理,使數據庫處于性能高效的狀態。
Sybase數據表分為行鎖數據表(Lock scheme Datarows)和頁鎖數據表(Lock scheme Allpages)??推毕到y中根據業務需要,對變化頻繁、并發性高的表如席位表(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 數據自動備份與清理
數據表的存儲數據無限制的增長,會導致系統處理性能下降。在全面分析了客票系統生產數據和基礎數據的變化、使用情況后,根據實際業務需要,制定了詳細的數據自動備份與清理策略,逐一設定了數據保留時間、數據備份方式、數據清理方式,每日自動進行過期數據清理與備份工作,為生產數據庫減負,以最小的數據集支撐生產,保證了生產數據庫的精干與高效運行。
北京鐵路局已將該技術應用在鐵路局中心、北京聯合站、天津聯合站、石家莊聯合站的客票數據庫服務器上,每日進行統計值更新、行級鎖數據表的碎片整理和過期數據備份與清理,每月進行存儲過程和觸發器重新編譯,定期進行數據庫一致性檢查、頁級鎖數據表的碎片整理及分區碎片整理。多種數據庫健康保障技術的綜合運用,有效保障了客票核心數據庫的高效、安全、穩定運行,取得了良好的效果。
責任編輯 方 圓
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
劉秉旺,高級工程師;吳建芳 ,教授級高級工程師。