王龍翔,魏曉林,陳躍輝,劉 成,董小社
(西安交通大學 電子與信息工程學院,陜西 西安 710049)
在信息化時代下,數據呈現爆發式增長,如何能夠快速地挖掘出有價值的信息,成為當今社會信息化發展的重要問題。數據庫技術作為信息化發展的核心技術,如何選擇合適的數據庫技術以及采取什么樣的標準來衡量數據庫的性能,成為了信息化時代亟需解決的重要問題。
事務處理性能委員會[1],即TPC(transaction processing performance council)[2]組織制定了一系列的性能評測標準[3],從此性能評測體系逐漸統一化和規范化[4-6]。TPC-E是其組織發布的最新OLTP性能評測基準。目前在TPC-E負載下,存在H-store、MySQL等不同類型數據庫的評測系統,但是這些數據庫的測試系統都不具備可移植性。
SQLite數據庫是最典型的嵌入式輕量級數據庫,具有文件數據庫特性和內存數據庫特性,目前廣泛應用于各類應用系統中[7-12]。因此,對SQLite性能進行評價對于實際應用系統具有十分重要的參考價值。然而,目前缺少面向SQLite數據庫的TPC-E實現及相應研究。
針對上述問題,設計和實現了面向SQLite的TPC-E基準測試系統。該系統能夠在TPC-E負載下完成對SQLite文件數據庫特性和內存數據庫特性的事務處理性能評測功能。通過對數據的分析,客觀真實地給出在TPC-E負載下SQLite兩種數據庫特性下的事務處理性能測試數據。
在一些系統的軟硬件資源緊張的應用下,重量級的數據庫系統如Oracle的基本特性不能很好地得到應用,而基于磁盤文件的輕量級數據庫系統[13]如SQLite就能發揮其明顯的優勢,保持了數據庫的基本特性[14]。
嵌入式輕量級SQLite數據庫管理系統是用C語言實現的一款開源的嵌入式數據庫引擎。SQLite數據庫引擎具有很多突出的優點,如可嵌入、可支持大部分的SQL92標準以及計算機語言、零配置、在任何兩種不同的操作系統上具有可移植性和獨立性強等。
TPC-E是由TPC組織在2007年發布的最新的OLTP測試模型,以紐約交易所為模型。TPC-E測試基準用于替代目前被大家所公認和普遍使用的TPC-C。TPC-E規定了一個比較全面的商業模式,能夠涵蓋目前幾乎所有的交易種類。
TPC-E測試基準的工作負載集中體現在三種范疇的交易行為,分別是普通客戶交易范疇、股票市場交易范疇和經紀人交易范疇,共包含了33張表和12種事務。
根據TPC-E測試模型,對面向SQLite的TPC-E基準測試系統整體框架進行設計,同時嚴格按照規范文檔中限定的各個功能模塊的描述和SQLite數據庫的特性,進行基準測試系統客戶端的詳細設計。文中的基準測試系統采用的是經典的C/S體系架構。通過模擬證券交易所的用戶功能,從客戶端提出服務請求,訪問服務器。服務器處理用戶請求并將處理的結果返回,同時該測試系統還需要記錄該基準測試系統在整個運行過程中各個事務執行的性能指標信息。該基準測試系統主要包括客戶端和后臺服務器兩部分,其中客戶端主要負責測試系統的參數配置、數據裝載、事務生成、事務的發送與接收和運行指標信息統計和打印。
設計出來的面向SQLite的TPC-E基準測試系統,應具備SQLite文件數據庫特性和內存數據庫特性在TPC-E負載下的事務處理性能評測功能,能夠客觀真實地評測出嵌入式數據庫SQLite的兩種數據庫在TPC-E負載下的事務處理性能。同時設計方案簡單高效,系統功能滿足魯棒性和完整性等要求。
面向SQLite的TPC-E基準測試系統的體系架構如圖1所示,主要由驅動器(Driver)和待測系統(SUT)組成。圖中用四種符號標示不同的內容:黑色加粗橫線表示TPC定義接口;加下劃線的部分表示必須由TPC-E測試的主辦方實現;字體加粗加黑的部分表示TPC官方提供的程序,在測試中強制要求使用;斜體字部分表示商用的組件,例如數據庫管理系統、數據庫驅動程序。

圖1 基準測試系統的體系架構
通過對TPC-E基準文檔的研究和TPC所提供的EGen程序包中實現的功能分析,可知測試實現的內容主要包含如下幾個方面:
(1)驅動和報告:驅動器端的驅動與報告由兩部分功能模塊實現,分別是總控模塊和基準測試運行結果數據的統計與輸出模塊。其中總控模塊的功能有讀取配置參數、建立事務緩沖隊列、網絡連接和創建工作線程等;基準測試運行結果數據的統計與輸出模塊是對基準測試系統測試運行過程中保存的各種測試指標數據進行統計,并在測試運行結束后輸出統計的指標數據。
(2)CE、MEE和DM:主要作用是模擬事務的生成。該部分的功能由TPC組織提供的EGen程序包實現。EGen程序包中的EGenDriverCE、EGenDriverMEE和EGenDriverDM分別實現客戶模擬驅動器、市場模擬驅動器和數據維護驅動器的功能。事務生成的模式是通過隨機事務類型生成方式。EGen只提供事務類型生成功能,而事務內部的邏輯事務幀功能,就需要測試主辦者自己根據待測系統的特征進行設計。
(3)驅動鏈接器:主要作用是將隨機事務類型結構體不斷發送到待測系統,同時接收反饋信息。
(4)事務連接器:主要作用是通過網絡接收驅動器層的消息指令,啟動特定事務的執行,并將事務執行的結果信息傳輸到驅動器層。
(5)事務幀執行器:主要任務是調度選定的隨機事務對應的底層數據庫的存儲過程,傳入信息,同時獲取返回信息。
(6)數據庫邏輯:根據測試主辦者所寫的事務幀邏輯進行測試,比如存儲過程。
TPC-E基準規范中定義了12種事務,其中每一個事務都是由一個或者多個帶參數輸入和輸出的事務幀,按照一定的邏輯關系組成。事務幀是指數據庫管理系統的單個存儲過程。12種事務中有10種事務是常規類事務類型,其中有8種事務是由證券公司啟動執行的,2種事務是由交易所啟動執行的;還有2種事務是通過設定固定時間間隔機制,進行自動啟動,執行清理程序(Trade_Cleanup)和數據維護類程序(Data_Maintenance),完成所有的數據庫表數據的檢查和更新操作。
驅動器部分的功能實現是面向SQLite的TPC-E基準測試系統的核心問題,在基準測試系統的邏輯架構中,驅動器的功能可以劃分為總控制模塊、參數配置模塊、數據裝載模塊、事務生成模塊、事務發送與響應接收和測試指標信息統計與打印模塊等。這些功能模塊共同完成了面向SQLite的TPC-E基準測試系統Driver的功能。下面就這些功能模塊的詳細設計進行介紹。
2.4.1 總控制模塊
總控制模塊是在整個基準測試系統中主要負責系統運行時間和規模等參數的輸入,同時對驅動器的其他功能模塊和SUT中客戶和市場驅動器的運行調度和控制。
總控制模塊根據輸入的參數啟動相應的功能模塊的執行,同時向運行結果統計和打印模塊、客戶端的市場驅動模擬器和客戶驅動模擬器發送啟動指定,開始基準測試系統的測試工作,直到測試時間結束。最后總控制模塊向測試系統指標信息統計與打印模塊發送使能信號,將測試指標信息統計結果打印輸出。
2.4.2 參數配置和數據裝載
參數配置模塊的主要功能是配置測試系統的運行參數。該模塊為整個系統的執行生成了一個運行參數配置文件,信息配置模塊響應總控模塊的使能信號,完成配置文件的錄入與導出操作[15]。
2.4.3 事務生成模塊
事務生成模塊的主要作用是通過事務模擬器對象生成隨機事務信息結構體,然后將生成的隨機事務信息結構體信息封裝成對應事務對象,存放到相應的事務緩沖隊列中,等待事務派發線程將其從事務緩沖隊列中取出,并發送到SUT進行執行。事務生成模塊共建立了三種事務模擬線程:CE事務模擬線程、DM事務模擬線程和MEE事務模擬線程,實現事務對象的生成,并且每一個事務模擬對象只對應一個FIFO的事務緩沖隊列,用于存放事務對象。
2.4.4 事務發送與響應接收
事務發送和接收模塊是通過多線程技術循環處理多個用戶并發訪問和反饋信息接收。其中每一個工作線程都代表一個用戶。
2.4.5 測試指標信息統計和打印模塊
指標信息統計和打印模塊的主要功能是對面向SQLite的TPC-E基準測試系統的測試運行中的性能指標數據進行記錄和統計,并在測試結束后將統計好的指標按照一定格式進行打印輸出。
基準測試系統中,應用服務器主要負責Driver端與SUT端之間的通信,接收事務請求消息并驅動事務的執行,解析事務幀的邏輯并將其轉化為數據庫底層具體的信息存取操作,以及將事務操作的結果信息封裝成響應消息,返回到Driver端。應用服務器端的設計分為三部分:事務接收模塊、CE/MEE型事務幀的解析與發送和CE/MEE型事務執行模塊。其中CE/MEE型事務幀的解析與發送是事務接收模塊和CE/MEE型事務執行模塊之間的橋梁。
文中在浪潮服務器系統上實現了面向SQLite的TPC-E基準測試系統。測試程序分客戶端驅動器層程序(Driver)和應用服務器層(SUT)兩部分來實現。其中Driver程序是對客戶類事務的操作功能進行模擬,產生隨機事務信息結構體,并發送到SUT程序;應用服務器程序包括CEServer和MEEServer。應用服務器中的CEServer程序和MEEServer程序分別用來模擬證券公司的服務操作和交易所的服務操作。CEServer程序執行CE和DM對象產生的事務并返回執行結果信息;MEEServer程序執行MEE對象產生的事務并返回執行結果信息。而CEServer將Trade_Order事務的執行結果信息轉換成事務類型信息結構體,存儲在TMEEIndexTable,從而驅動MEEServer執行市場類事務。
TPC-E基準測試系統Driver的實現是根據2.1節測試系統的功能模塊的設計思路,這里基于測試系統功能模塊的總控制模塊實現的詳細說明,對面向TPC-E基準測試系統的功能模塊的具體實現細節進行介紹。總控模塊對整個測試過程的控制操作,具體分為四個部分:
(1)啟動測試指標信息統計與輸出模塊,對測試結果進行統計,并利用Python語言進行打印輸出;
(2)啟動Driver層的隨機事務生成模擬器,產生隨機事務類型信息結構體;
(3)啟動客戶事務驅動模擬器和市場事務驅動模擬器,對事務進行幀解析和分發;
(4)啟動數據庫連接接口,接收上一層發來的邏輯事務幀,并對數據庫進行存儲操作。
應用服務器端(SUT)的作用是對接收到的事務邏輯請求進行處理,主要功能有事務執行參數接受、事務幀的邏輯解析、消息的接收與發送和數據庫連接設置。根據應用服務器端設計,應用服務器端的實現也可以分為三部分:事務接收模塊、CE/MEE型事務幀解析與發送和CE/MEE型事務執行模塊。其中CE/MEE型事務幀的解析與發送的邏輯實現在TPC-E基準規范中已經給出,EGen程序包中的EGenTxnHarness程序已經給出了事務接收與執行模塊的調用接口和事務執行順序的程序。
文中對兩種特性下的參數配置進行了統一。SQLite在TPC-E負載下的規模參數配置如表 1所示。對該系統的功能和性能進行測試和驗證。

表1 TPC-E基準測試系統的參數配置
Trade_Result事務每秒所能執行的事務處理性能指標值的統計結果如圖2所示。SQLite數據庫在TPC-E負載下的性能指標tpsE的平均值為1.763 211。表明磁盤I/O是待測系統較為明顯的瓶頸之一。

圖2 性能指標統計結果(文本數據庫)
在整個測試過程中,通過對這27個不同測試執行時間的性能進行了監控,這里選取了系統內存使用情況數據進行統計,分別選取了五組數據求平均值,以減少其他因素帶來的誤差。這些數據包括測試系統運行時使用的內存、空閑內存、交換區內存。具體的內存統計結果如圖3所示。

圖3 內存使用情況統計結果(文本數據庫)
從以上對SQLite數據庫的文件數據庫特性在TPC-E負載下的功能測試結果可以得出,面向SQLite的TPC-E基準測試系統在文本數據庫特性下,符合TPC-E基準規范的要求和SQLite文本數據庫的性能標準,測試數據具有一定的參考價值和可靠性。同時從文件數據庫特性的性能測試結果可以看出,內存利用平均值在3.5 G左右。
通過對測試結果的統計,SQLite內存數據庫特性的事務處理性能指標值的統計結果如圖4所示。從圖中可以看出,SQLite的內存數據庫特性在TPC-E負載下,通過不斷延長測試時間,來增加面向SQLite的TPC-E基準測試系統的測試壓力,而待測系統的性能指標基本處于穩定狀態。經過計算可得,tpsE的平均值為3.462 819。

圖4 性能指標統計結果(內存數據庫)
在進行SQLite數據庫的內存數據庫特性的測試過程中,測試系統在這27個不同測試運行時間內,內存監測數據統計結果如圖5所示。

圖5 內存使用情況統計結果(內存數據庫)
分析可知,面向SQLite的TPC-E基準測試系統在內存數據庫模式下符合TPC-E基準規范。從性能測試結果可以看出,內存利用基本上在90%以上,因此內存是待測系統的內存數據庫特性較為明顯的瓶頸之一。
設計和實現了面向SQLite的TPC-E基準測試系統,在模擬的金融證券交易場景下測試了SQLite應用于金融證券交易平臺的處理性能瓶頸,對SQLite數據庫的事務處理性能優化提供了重要數據,為實際應用提供了性能參考依據。