首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

sysbench 0.4 基準測試完整指南:安裝、CPU/記憶體/IO/OLTP 實戰

     編輯:MySQL 綜合教學

sysbench 0.4 基準測試完整指南

sysbench 是模組化、跨平台、多線程的基準測試工具,支援 CPU、記憶體、檔案 IO、執行緒、Mutex 及資料庫 OLTP 測試。本文以 0.4.12 版為例,詳述安裝、通用參數、各測試模組實戰與報告解讀。

一、安裝步驟

# 1. 安裝相依套件
yum install libtool -y

# 2. 設定編譯選項(指定 MySQL 路徑)
./configure --prefix=/usr/local/sysbench-0.4.12 \
  --with-mysql-includes=/usr/local/mysql/include \
  --with-mysql-libs=/usr/local/mysql/lib

# 3. 編譯安裝
make && make install

# 4. 複製測試腳本與建立軟連結
cp -r sysbench/tests /usr/local/sysbench-0.4.12
ln -s /usr/local/sysbench-0.4.12/bin/sysbench /usr/local/bin/sysbench

# 5. 設定動態庫路徑
echo 'export LD_LIBRARY_PATH=/usr/local/mysql/lib' >> /etc/profile
source /etc/profile

若無 configure 腳本,先執行 chmod +x autogen.sh && ./autogen.sh。支援 Oracle/PostgreSQL 需加 --with-oracle 或 --with-pgsql。

二、通用命令結構

sysbench [通用選項] --test=測試模組 [模組選項] 命令

命令: prepare | run | cleanup | help

關鍵通用參數

參數說明預設
--num-threads=N執行緒數1
--max-requests=N最大請求總數10000
--max-time=N最大執行秒數(0=不限)0
--report-interval=N定期輸出中間統計秒數0(關閉)
--percentile=N回應時間百分位數95
--debug=on顯示詳細除錯資訊off

三、各模組實戰

1. CPU 測試(質數運算)

sysbench --num-threads=12 --max-requests=10000 --test=cpu --cpu-max-prime=20000 run

12 線程各執行質數運算至 20000,測量總時間與每秒事件數。

2. 執行緒調度測試

sysbench --num-threads=12 --max-requests=10000 --test=threads --thread-yields=100 --thread-locks=2 run

模擬高負載下鎖競爭與 yield 切換效能。

3. 記憶體速度測試

# 8K 區塊循序寫入
sysbench --num-threads=12 --max-requests=10000 --test=memory \
  --memory-block-size=8K --memory-total-size=100G --memory-access-mode=seq run

# 8K 區塊隨機寫入
sysbench --num-threads=12 --max-requests=10000 --test=memory \
  --memory-block-size=8K --memory-total-size=100G --memory-access-mode=rnd run

# 16K 區塊循序/隨機
sysbench --num-threads=12 --max-requests=10000 --test=memory \
  --memory-block-size=16K --memory-total-size=100G --memory-access-mode=seq run
sysbench --num-threads=12 --max-requests=10000 --test=memory \
  --memory-block-size=16K --memory-total-size=100G --memory-access-mode=rnd run

結果摘要:

區塊/模式耗時吞吐量
8K 循序13.2s7.7 GB/s
8K 隨機12.7s8.1 GB/s
16K 循序7.9s13.0 GB/s
16K 隨機6.4s15.9 GB/s

結論:區塊越大吞吐越高;隨機存取反而略快於循序(CPU 快取預取機制影響)。

4. 檔案 IO 測試

# 準備 3GB 測試檔
sysbench --num-threads=12 --max-requests=10000 --test=fileio \
  --file-total-size=3G --file-test-mode=rndrw prepare

# 執行隨機讀寫測試
sysbench --num-threads=12 --max-requests=10000 --test=fileio \
  --file-total-size=3G --file-test-mode=rndrw run

# 清理
sysbench --num-threads=12 --max-requests=10000 --test=fileio \
  --file-total-size=3G --file-test-mode=rndrw cleanup

關鍵參數:--file-test-mode (seqwr/seqrd/rndrw/rndwr/rndrd)、--file-io-mode (sync/async/mmap)、--file-rw-ratio(讀寫比)。

fileio 測試報告

測試機 IO 約 38 MB/s。比較兩台伺服器 IO 效能時,必須使用相同線程數與參數。

5. Mutex 鎖效能測試

sysbench --num-threads=12 --test=mutex --mutex-num=1024 --mutex-locks=10000 --mutex-loops=10000 run

模擬高併發鎖競爭場景。

6. OLTP 資料庫基準測試(核心)

# 1. 準備資料:10 張表,各 100 萬筆
sysbench --num-threads=12 --max-requests=100000 --test=oltp \
  --mysql-user=root --mysql-password=root --mysql-db=sbtest \
  --oltp-table-size=1000000 --oltp-num-tables=10 prepare

# 2. 執行複合事務測試
sysbench --num-threads=12 --max-requests=100000 --test=oltp \
  --mysql-user=root --mysql-password=root --mysql-db=sbtest \
  --oltp-table-size=1000000 --oltp-num-tables=10 run

# 3. 清理
sysbench --num-threads=12 --max-requests=100000 --test=oltp \
  --mysql-user=root --mysql-password=root --mysql-db=sbtest \
  --oltp-table-size=1000000 --oltp-num-tables=10 cleanup

測試報告關鍵指標:

  • transactions: 100065 (791.94 per sec.) → TPS ≈ 792
  • read/write requests: 1901235 (15046.89 per sec.) → QPS ≈ 15047
  • response time 95 percentile: 18.00ms
  • deadlocks: 0

每個事務包含:點查詢、範圍查詢、SUM/ORDER BY/DISTINCT、索引/非索引 UPDATE、DELETE、INSERT。

OLTP 核心參數

參數說明預設
--oltp-test-modesimple/complex/nontrx/spcomplex
--oltp-table-size每表筆數10000
--oltp-num-tables表數量1
--oltp-read-only唯讀模式off
--mysql-table-engine引擎:innodb/myisaminnodb
--oltp-point-selects每事務點查詢數10
--oltp-range-size範圍查詢跨度100

四、總結

sysbench 功能最完整、報告最詳細、社群最活躍的基準工具。建議建立標準化測試流程(固定參數、資料量、執行時間),每次資料庫調優前後對比,量化效能提升。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved