| 參數 | 縮寫 | 說明 | 範例 |
--auto-generate-sql | -a | 自動生成測試 SQL | -a |
--concurrency | -c | 並發客戶端數 | -c 100,200,400 |
--iterations | -i | 重複執行次數 | -i 3 |
--number-of-queries | -q | 每客戶端查詢數 | --number-of-queries=100000 |
--engine | -e | 測試引擎(可多個) | -e "myisam,innodb" |
--create-schema | -d | 測試資料庫 | --create-schema=test_db |
--query | -q | 自定義測試 SQL | --query="CALL proc()" |
--csv | — | 輸出 CSV 報表 | --csv=report.csv |
--delimiter | -F | 語句分隔符 | --delimiter=";" |
--verbose | -v | 詳細輸出 | -v |
完整參數見正文長表(含 debug、SSL、認證外掛等)。
二、實戰範例
1. 多並發梯度測試存儲過程
mysqlslap -uroot -proot -h192.168.10.43 -P3306 \
--create-schema=chenmh --delimiter=";" \
--query="CALL pro_auto_select_pri" \
--concurrency=100,200,400 \
--number-of-queries=100000
輸出:各並發下執行 10 萬次 CALL 耗時(單位:秒)。
2. 引擎對比 + CSV 報表
mysqlslap -a -e "myisam,innodb" --csv="C:/report.csv"
三、輸出解讀
Benchmark
Average number of seconds to run all queries: 12.345 seconds
Minimum number of seconds to run all queries: 11.234 seconds
Maximum number of seconds to run all queries: 13.456 seconds
Number of clients running queries: 100
Average queries per client: 1000
- 時間 = 執行
--number-of-queries 指定查詢數的總耗時
- 預設
--iterations=1,多次迭代取平均
四、局限與建議
- 自動生成 SQL 較簡單,無法模擬複雜業務查詢
- 報表維度單一(僅耗時),無 QPS、延遲分位、錯誤率
- 生產級基準測試建議用
sysbench:支援 Lua 腳本、多階段、詳細統計、分佈式協同
mysqlslap 適合:快速驗證「優化前後單表查詢效能差異」、「新索引效果」、「引擎切換影響」
五、最佳實踐流程
- 備份生產資料 → 匿名化 → 導入測試庫
- 基線測試:
mysqlslap -a -c 50 -i 3 -d test_db
- 應用優化(加索引/改 SQL/調參數)
- 回歸測試:同參數再跑一次
- 對比 Average/Min/Max,確認提升
- 生產灰度驗證
工具是放大鏡,看清效能真相,但業務場景才是試金石。
- 上一篇文章: MySQL 獲取最大 ID、自增值、表記錄總數四大核心指標高效查法總結
- 下一篇文章: MySQL 5.7.15 官方安裝版圖文教程:官網下載、MSI 自定義安裝、服務配置、HeidiSQL 驗證
Copyright ©
程式碼之家 All Rights Reserved