mysqlslap 是 MySQL 官方內建的負載測試工具,可自動產生測試資料與 SQL,模擬多客戶端併發存取,輸出執行時間統計。適合快速驗證資料庫基準效能,但報告較簡單(無 TPS/QPS),深度分析建議改用 sysbench。
| 參數 | 短參數 | 說明 |
|---|---|---|
| --auto-generate-sql | -a | 自動產生測試 SQL(預設為 SELECT) |
| --auto-generate-sql-load-type | 負載類型:mixed/update/write/key/read | |
| --concurrency | -c | 併發客戶端數(可逗號分隔多組:100,200,400) |
| --iterations | -i | 重複執行次數(預設 1) |
| --number-of-queries | 每個客戶端執行的查詢總數 | |
| --query | -q | 指定自訂 SQL(需搭配 --delimiter) |
| --create-schema | 測試使用的資料庫名稱 | |
| --engine | -e | 測試引擎:myisam, innodb 等(可多組) |
| --csv | 輸出 CSV 格式報告 | |
| --verbose | -v | 顯示詳細資訊 |
| --only-print | 僅列印將執行的 SQL,不實際執行 |
完整參數請執行
mysqlslap --help查看。
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
輸出解讀: 分別顯示 100/200/400 併發執行 10 萬次 CALL 所花費的總時間(單位:秒)。

mysqlslap -a -e "myisam,innodb" --csv="c:/a.csv"
自動建立測試表、插入資料、執行混合負載,並輸出 CSV 供後續分析。
mysqlslap -a \ --auto-generate-sql-load-type=mixed \ --auto-generate-sql-write-number=100 \ --auto-generate-sql-secondary-indexes=3 \ --concurrency=50 \ --iterations=3 \ --create-schema=testdb
| 優點 | 缺點 |
|---|---|
| MySQL 內建,無需額外安裝 | 報告僅含時間統計,無 TPS/QPS/延遲分佈 |
| 自動產生測試資料與 Schema | 自動產生 SQL 型式有限,難以模擬真實業務 |
| 支援多併發等級一次跑完 | 無法精細控制交易混合比例 |
| 可輸出 CSV 方便後處理 | 長時間測試穩定性較差 |
mysqlslap 適合快速驗證、簡單基準比較。生產級效能基準測試、詳細指標分析(TPS、QPS、P99 延遲)、長時間穩定性測試,請使用 sysbench。