官方內建:mysqlslap
- 隨 MySQL 安裝提供,無需額外安裝。
- 模擬併發客戶端負載,自動產生測試資料與 Schema。
- 指令範例:
mysqlslap --concurrency=50 --iterations=10 --number-int-cols=5 --number-char-cols=5 \
--auto-generate-sql --engine=innodb -u root -p
業界標準:sysbench
- 支援 MySQL、PostgreSQL、Oracle 等多種資料庫。
- 提供 OLTP、唯讀、寫入、混合等多種測試模式。
- Lua 腳本可自訂複雜業務邏輯。
- 安裝:`yum install sysbench` / `apt-get install sysbench`
- 指令範例:
sysbench /usr/share/sysbench/oltp_read_write.lua \
--mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=xxx \
--mysql-db=test --tables=10 --table-size=100000 --threads=64 --time=300 run
標準基準:TPC-C
- 國際交易處理性能委員會標準基準測試,模擬完整訂單處理流程。
- 結果具公信力,適合產品選型、硬體採購決策。
- 實施複雜,通常由廠商或第三方實驗室執行。
補充工具
- MySQL Benchmark Suite:舊版 Perl 腳本,僅供參考。
- super-smack:老牌壓力測試工具,已停止維護。
- go-tpc:Go 實作的 TPC-C/TPC-H,輕量易部署。
測試黃金法則
- 使用真實資料分佈與查詢模式,而非純隨機資料。
- 測試前 `FLUSH TABLES`、`RESET MASTER` 確保環境乾淨。
- 記錄硬體規格、MySQL 版本、參數設定、並發數、持續時間,確保可重現。
- 關注 QPS、TPS、延遲百分位 (P95/P99)、錯誤率 而非單一指標。