資料庫壓力測試工具Hammerdb
本文主要介紹Hammerdb在OLTP(Online Transaction Processing,聯機事務處理)系統中基於TPC-C的測試方法。
資料庫壓力測試 Database Load Testing
資料庫尤其是關係型資料庫系統已經逐漸成為公司或大型企業的IT系統中最核心的部分,而最能體現資料庫能力的便是資料庫的效能指標。
資料庫壓力測試通過模擬使用者真實的應用場景,為資料庫效能和可擴充套件性的評估提供了有效的方式。通過壓力測試,資料庫系統廠商及使用者可以瞭解資料庫行為,從而找到提高其效能的方法,對資料庫的完善和進一步開發有著指導作用。
Hammerdb 簡介 Introduction
Hammerdb作為一個開源的資料庫壓力測試的基準工具,同時支援Linux和Windows系統,有圖形使用者介面(GUI)和命令列兩種形式。目前支援的資料庫包括Oracle, SQL Server, DB2, MySQL, MariaDB, PostgreSQL, Redis等。
Hammerdb模擬了標準的TPC-C和TPC-H兩種測試模型。相比於標準的TPC-C和TPC-H,Hammerdb執行成本低,操作簡單, 是伺服器資料庫壓力測試的很好選擇。
Hammerdb基於TPC-C的OLTP系統測試模擬了一個批發商的倉儲管理環境,本文將對此進行介紹,新手建議先從圖形介面開始,命令列的會以後再介紹。
TPC & TPC-C
TPC(Transaction Processing Performance Council): 事務處理效能委員會是一個非營利性組織,其委員會成員包括大多數主要資料庫產品廠商以及伺服器硬體系統供應商. 該組織定義了一系列資料庫的基準,並依據這些基準測試專案向業界釋出客觀的TPC效能資料。更多資訊可參考官方網站 TPC官網
TPC-C: 是TPC組織專門針對OLTP(Online Transaction Processing,聯機事務處理)系統提出的基準規範,完全的規範了資料庫在事務處理效能方面的評測標準和測評結果,是目前業界內公認的評測資料庫效能的主流國際標準之一。 眾廠商已釋出的歷史結果可以去TPC官網檢視
然而實施一次TPC-C基準測試的成本巨大,有時會耗費上百萬美金,並且耗時很長,操作過程複雜。Hammerdb在TPC-C的基礎上簡化了實施標準,降低了實施難度。同時由於他的開源特性,除了硬體平臺的搭建,大大減少了成本。
以Oracle的測試為例,下面介紹hammerdb的使用方法。
Hammerdb系統配置 System Configuration
Hammerdb的測試需要使用server-client 配置,即兩臺伺服器系統,一臺作被測機 (System Under Test, SUT),一臺作壓力機 (Load Generation Client)。這兩臺機器需要直連或者連到同一個交換機上以確保網路通暢。被測機伺服器裝oracle伺服器版本,壓力機安裝oracle客戶端版本和hammerdb。
Hammerdb的安裝 Installation
下載安裝包 Hammerdb官網
Hammerdb支援linux和Windows系統,目前最新版本是3.0。Linux系統3.0的安裝方式有兩種,一種是下載安裝包然後使用圖形介面安裝,另一種是直接下載.tar壓縮檔案,解壓後直接執行hammerdb檔案即可,這種最簡單。但3.0以前的版本都需要用第一張方法安裝,這裡簡單講一下,以Hammerdb 2.23為例。
[oracle@hammer-client ~]$chmod +x HammerDB-2.23-Linux-x86-64-Install #新增執行許可權
[oracle@hammer-client ~]$./HammerDB-2.23-Linux-x86-64-Install #執行安裝包檔案
選擇語言,然後一直下一步就可以了
安裝完成,會在指定目錄下生成一個HammerDB-2.23的資料夾。
執行目錄下的hammerdb.tcl即可呼叫Hammer DB視窗:
[oracle@hammer-client ~]$ ./hammerdb.tcl
在Linux系統, 需要配置下環境變數,加入oracle庫檔案的路徑
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export ORACLE_LIBRARY=$ORACLE_HOME//lib/libclntsh.so
測試步驟 Test Method
1.載入測試資料
先選擇資料庫。點選選單欄option下面的benchmark,選擇想要測試的資料庫
在用Hammer DB 測試TPCC 之前,需要先用Hammer DB 往資料庫里加載測試資料。 資料單位是warehouse。點選左側’Schema Build’下拉選單中option進行選項設定。
這裡的修改在下次重新開啟hammerdb時便會失效,如果想要永久性修改option中的設定也可以通過修改Hammerdb目錄下config/oracle.xml檔案中的引數 (3.0以前版本則修改config.xml檔案)。
點選‘Build’或頂部的’create TPCC schema’按鈕, 開始建立測試資料模型,相應的指令碼會載入到指令碼編輯器中。
開始建立測試資料,右邊的視窗會顯示輸出。
Hammer DB 載入完資料完成,點選紅色按鈕destroy virtual users終止。
2.設定測試引數
接下來設定測試引數,即Driver Script下的Options,同樣可以通過修改config/oracle.xml儲存所設定引數(3.0以前版本修改config.xml檔案)
每一次設定好後都需要點選load載入測試指令碼到指令碼編輯視窗,當然也可以直接在指令碼編輯框中修改。
3.單次測試
在Virtual user下進行虛擬使用者的設定,包括使用者和重複次數等。Virtual user的數量跟CPU的總核數相關。選擇’log Output to Temp’會把log輸出到/tmp/hammerdb.log檔案中。同樣如果要長久儲存設定修改config/generic.xml檔案(3.0以前版本修改config.xml檔案)
設定好了之後點選create建立使用者,然後點Run就可以把測試跑起來啦
測試的結果會顯示在右邊的視窗中,也會儲存在/tmp/hammerdb.log檔案中。可以用命令快速檢視多次測試結果。
[oracle@hammer-client ~]$grep TPM /tmp/hammerdb.log -B1
4.Autopilot多次測試取峰值
資料庫的測試結果會隨著virtual user 數的增加逐漸達到飽和。有了Autopilot這個功能,可以自動化進行多次測試。將多個virtual user的值輸入,中間用空格間隔。這裡設定的每跑一次的測試時間應當大於Driver script –option下設定的ramp up和正式測試的總時間。
- Transaction counter實時監測測試過程
在跑測試之前設定好transaction counter,就可以在測試的過程中實時資料庫的吞吐量,有助於發現問題和系統瓶頸分析。
設定好之後開始跑測試,然後點選下圖按鈕就可以實現監控了。
測試結果 Test Result
Hammerdb的測試結果由吞吐量(throughput)來衡量,單位為TPM (Transactions per minute)。另外標準TPC-C的單位為tpmC。
注: Hammerdb模擬但並不等同於標準的TPC-C,它的結果並不能標準的TPC-C相比
關於Hammerdb更多資訊可以參考這裡 Hammerdb官網文件 ,後面會介紹一下被測機端oracle的環境搭建