sysbench是一款非常優秀的基準測試工具,它能夠精準的模拟MySQL資料庫存儲引擎InnoDB的磁盤的I/O模式。是以,基于sysbench的這個特性,下面利用該工具,對MySQL資料庫支撐從簡單到複雜事務處理工作負載的基準測試與驗證。
測試場景一、OLTP讀基準測試
1) 準備資料
sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=100000
--mysql-db=cbusdb --mysql-user=root prepare
2) OLTP随機讀一緻性業務場景測試驗證
time sysbench --test=oltp --oltp-table-size=100000 --mysql-db=cbusdb
--mysql-user=root --max-time=60 --oltp-read-only --max-requests=0 --num-threads=8 run
以上測試模拟并發8個線程,最大請求10000次/秒,持續60秒對單表資料集10w條資料量的表進行随機讀操作,測試結果如下所示:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CZkZDZmVjNyETM1UzM4ImYmRmZ4kjM1UmY3MTOkRTMl9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
通過模拟8個并發使用者在資料量10w條的表上進行一緻性讀操作并結合上圖,分析得出如下結論:
1) 60秒内共執行讀請求766094次,更新及其他類型的請求109442次,QPS:12765;
2) 60s内共執行事務操作54721,TPS:911,成功率100%;
3) 每個事務執行最小時間2.98ms,最大時間184.5ms,平均執行時間8.76ms。
以上測試結果運作環境基本配置資訊:
1) 虛拟機2顆CPU、2G記憶體,20G存儲空間;
2) MySQL資料庫參數未優化、調整。
測試場景二、OLTP混合類型負載測試
模拟OLTP随機讀、寫(更新、删除、插入):
sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=10000
--mysql-db=cbusdb --mysql-user=root --max-time=60
--oltp-nontrx-mode=update_key --max-requests=0 --num-threads=8 run
測試結果如下所示:
通過模拟8個并發使用者在資料量10w條的表上模拟複雜的混合性工作負載測試并結合上圖,分析得出如下結論:
1) 60秒内共執行讀請求233268次,寫請求83260次,其他類型的請求:33309,QPS:5273;
2) 60s内共執行事務操作16647,TPS:277,鎖沖突造成的死鎖的數量15個,事務的成功率99.91%;
3) 每個事務執行最小時間8.19ms,最大時間1299.78ms,平均執行時間28.82ms。
以上測試結果運作環境基本配置資訊:
1) 虛拟機2顆CPU、2G記憶體,20G存儲空間;
2) MySQL資料庫參數未優化、調整。