sysbench 是一款模組化、跨平台、多線程的基準測試工具,主要用於評估各種系統參數下的資料庫負載表現。支援 CPU、磁碟 I/O、排程器、記憶體分配、POSIX 線程及資料庫(OLTP)六大類測試,目前主流支援 MySQL、PostgreSQL、Oracle 三大資料庫。
專案首頁:sysbench 官方網站
tar zxf sysbench-0.4.8.tar.gz cd sysbench-0.4.8 ./configure && make && make install strip /usr/local/bin/sysbench
適用於 MySQL 安裝於標準預設路徑(如 /usr/local/mysql)的環境。
若 MySQL 安裝於自定義目錄(如 /usr/local/mysql),需額外指定頭文件與庫路徑:
./configure --with-mysql-includes=/usr/local/mysql/include \
--with-mysql-libs=/usr/local/mysql/lib \
&& make && make install
注意: 編譯前請確認 MySQL lib 目錄下包含對應的 .so 動態庫文件,否則需安裝 devel 或 shared 套件補齊。
編譯時加入對應參數啟用:
--with-pgsql:支援 PostgreSQL--with-oracle:支援 Oracle預設僅啟用 MySQL 支援,其他兩項需顯式開啟。
sysbench --test=cpu --cpu-max-prime=20000 run
執行質數運算,--cpu-max-prime 可根據 CPU 能力調整,數值越大壓力越大。
sysbench --test=threads --num-threads=64 --thread-yields=100 --thread-locks=2 run
--num-threads:併發線程數--thread-yields:每線程主動讓出 CPU 次數--thread-locks:鎖操作數量# 準備測試文件(3GB,16線程,隨機讀寫) sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrw prepare # 執行測試 sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrw run # 清理測試文件 sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrw cleanup
--file-test-mode 可選:seqwr(循序寫)、seqrd(循序讀)、rndrw(隨機讀寫)等。
sysbench --test=memory --memory-block-size=8k --memory-total-size=4G run
模擬記憶體傳輸 4GB 資料,區塊大小 8KB,測試記憶體讀寫吞吐量。
sysbench --test=oltp --mysql-table-engine=myisam --oltp-table-size=1000000 \ --mysql-socket=/tmp/mysql.sock --mysql-user=test --mysql-host=localhost \ --mysql-password=test prepare
關鍵參數說明:
--mysql-table-engine:指定儲存引擎(官方舊文檔誤寫為 --mysql-table-type)--oltp-table-size:測試表資料筆數--mysql-db:可指定測試資料庫,預設為 sbtestinnodb、myisam 等 MySQL 支援類型測試流程:prepare 建表灌數 → run 執行壓測 → cleanup 清理資料。
sysbench 功能豐富、腳本化程度高,適合自動化效能基線建立與回歸測試。更多進階用法請參考官方文檔與源碼腳本目錄。