1.測(cè)試相關(guān)概念
(1) sysbench: sysbench是一個(gè)基于LuaJIT的可編寫腳本的多線程基準(zhǔn)測(cè)試工具。它最常用于數(shù)據(jù)庫(kù)基準(zhǔn)測(cè)試,但也可用于創(chuàng)建復(fù)雜的工作負(fù)載任務(wù),集成了TPC-C標(biāo)準(zhǔn)測(cè)試。
(2)TPC-C: 是一個(gè)用于評(píng)估數(shù)據(jù)庫(kù)聯(lián)機(jī)交易處理(OLTP)能力的業(yè)界標(biāo)準(zhǔn)測(cè)試。它包含五類主要的業(yè)務(wù)事務(wù)模型:
新訂單(New-Order):
客戶輸入一筆新的訂貨交易。
支付操作(Payment)
:更新客戶賬戶余額以反映其支付狀況。
發(fā)貨(Delivery)
:發(fā)貨(模擬批處理交易)。
訂單狀態(tài)查詢(Order-Status)
:查詢客戶最近交易的狀態(tài)。
庫(kù)存狀態(tài)查詢(Stock-Level)
:查詢倉(cāng)庫(kù)庫(kù)存狀況,以便能夠及時(shí)補(bǔ)貨。
TPC-C通過(guò)tpmC值(Transactions per Minute)來(lái)衡量系統(tǒng)的最大有效吞吐量,這個(gè)指標(biāo)主要關(guān)注系統(tǒng)在執(zhí)行上述幾種交易的同時(shí),每分鐘可以處理多少個(gè)新訂單交易。所有交易的響應(yīng)時(shí)間必須滿足TPC-C測(cè)試規(guī)范的要求,且各種交易數(shù)量所占的比例也應(yīng)該滿足TPC-C測(cè)試規(guī)范的要求。
2.測(cè)試設(shè)置
架構(gòu) |
內(nèi)存 |
核數(shù) |
x86 |
4G |
2C |
3.記錄參數(shù)
-
90th %
:測(cè)試中90%的事務(wù)響應(yīng)時(shí)間都低于這個(gè)值。它是衡量數(shù)據(jù)庫(kù)響應(yīng)時(shí)間的一個(gè)指標(biāo),用于顯示絕大多數(shù)事務(wù)的性能。
-
Maximum
:在測(cè)試期間觀察到的最長(zhǎng)事務(wù)響應(yīng)時(shí)間。這個(gè)指標(biāo)對(duì)于理解在最糟糕情況下數(shù)據(jù)庫(kù)的性能非常重要。
-
Latency
:交易的平均響應(yīng)時(shí)間。
-
Count
:在測(cè)試期間執(zhí)行的特定類型事務(wù)的總次數(shù)。
-
Percent
:一個(gè)特定事務(wù)類型占所有事務(wù)總數(shù)的百分比。
-
Rollback
:在數(shù)據(jù)庫(kù)事務(wù)處理中,如果事務(wù)無(wú)法成功完成,則會(huì)執(zhí)行回滾操作,取消所有已進(jìn)行的更改。此指標(biāo)顯示測(cè)試期間發(fā)生的回滾次數(shù)。
-
Errors
:指在測(cè)試過(guò)程中遇到的錯(cuò)誤次數(shù)。這些錯(cuò)誤可能是由于各種原因?qū)е碌氖聞?wù)失敗。
-
Skipped
:在TPC-C的發(fā)貨(Delivery)事務(wù)中,如果某些發(fā)貨不能在指定時(shí)間內(nèi)完成,它們可能會(huì)被標(biāo)記為“跳過(guò)”的發(fā)貨。這個(gè)指標(biāo)計(jì)算了這種情況的次數(shù)。
-
tpmC:TPC-C 測(cè)試中每分鐘處理的數(shù)量。
-
tpmTotal:每分鐘內(nèi)處理的事務(wù)總數(shù)。
4.測(cè)試腳本
db=dm
driver=dm.jdbc.driver.DmDriver
conn=jdbc:dm://127.0.0.1:5236
user=benchmarksql
password=Dameng123
//數(shù)據(jù)庫(kù)
warehouses=10
//初始倉(cāng)庫(kù)中數(shù)據(jù)的并行數(shù)
loadWorkers=10
//壓力測(cè)試時(shí)的終端數(shù)量
terminals=1
//To run specified transactions per terminal- runMins must equal zero
runTxnsPerTerminal=0
//To run for specified minutes- runTxnsPerTerminal must equal zero
runMins=2
//Number of total transactions per minute
limitTxnsPerMin=0
//Set to true to run in 4.x compatible mode. Set to false to use the
//entire configured database evenly.
terminalWarehouseFixed=true
//The following five values must add up to 100
newOrderWeight=45
paymentWeight=43
orderStatusWeight=4
deliveryWeight=4
stockLevelWeight=4
// Directory name to create for collecting detailed result data.
// Comment this out to suppress.
resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tS
osCollectorScript=./misc/os_collector_linux.py
osCollectorInterval=1
//osCollectorSSHAddr=user@dbhost
osCollectorDevices=net_ens33 blk_sda
5.測(cè)試結(jié)果示例
數(shù)據(jù)庫(kù)數(shù)量 |
初始數(shù)據(jù)庫(kù) |
客戶端數(shù)量 |
每個(gè)終端事務(wù) |
運(yùn)行時(shí)長(zhǎng) |
10 |
0 |
1 |
10 |
2 |
TransactionType |
90th % |
Maximum |
Count |
Percent |
Rollback |
Errors |
SkippedDeliveries |
NEW_ORDER |
0.052s |
0.491s |
805 |
46.211% |
0.870% |
0 |
N/A |
PAYMENT |
0.031s |
0.225s |
745 |
42.767% |
N/A |
0 |
N/A |
ORDER_STATUS |
0.046s |
0.492s |
70 |
4.018% |
N/A |
0 |
N/A |
STOCK_LEVEL |
1.301s |
3.915s |
60 |
3.444% |
N/A |
0 |
N/A |
DELIVERY |
0.000s |
0.002s |
62 |
3.559% |
N/A |
0 |
N/A |
DELIVERY_BG |
0.235s |
1.409s |
62 |
N/A |
N/A |
0 |
0 |
指標(biāo) |
整體 TPM 值 |
tpmC |
402.00 |
tpmTotal |
871.00 |
參考資料:
1.SUN-甲骨文系統(tǒng)硬軟件介紹服務(wù)器技術(shù)應(yīng)用太平洋電腦網(wǎng)PConline
2.tpc-c 基準(zhǔn)測(cè)試簡(jiǎn)介以及程序的安裝、使用_tpc-c控制面板-CSDN博客
3.數(shù)據(jù)庫(kù)壓測(cè)模型TPC-C/TPC-H - HunterHuang - 博客園 (cnblogs.com)