MySQL 官方自帶壓測工具,專注測試並發量、配置文件優化效果、服務器資源佔用。
| 參數 | 說明 |
|---|---|
-a, --auto-generate-sql | 自動生成測試表與數據 |
--auto-generate-sql-load-type | 測試類型:read/key/write/update/mixed(默認) |
-c, --concurrency=N | 並發數,可多值:50,100 |
-i, --iterations=N | 迭代次數,取平均值更準確 |
-e, --engine=name | 存儲引擎對比:myisam,innodb |
--number-of-queries=N | 總查詢次數 |
-T, --debug-info | 輸出 CPU/內存資訊 |
--only-print | 僅打印 SQL 不執行(預覽) |
mysqlslap -a --only-print
mysqlslap -uroot -p123456 -a --concurrency=50,100 --number-of-queries=1000 --debug-info
結果分析: 並發越高,總耗時越長;單客戶平均查詢數下降。
mysqlslap -a --concurrency=50,100 --number-of-queries=1000 --iterations=5 --debug-info
mysqlslap -uroot -p123456 -a --concurrency=50,100 --number-of-queries=1000 --iterations=5 --engine=myisam,innodb --debug-info
典型結果: MyISAM 讀性能優於 InnoDB,但 InnoDB 支援事務與行鎖,寫入並發更強。
mysqladmin -uroot -p123456 -i 10 extended-status
| 指標 | 含義 |
|---|---|
Threads_connected | 當前連接數 |
Threads_running | 活躍線程數(非睡眠) |
Questions | 查詢總數 |
Slow_queries | 慢查詢數 |
Max_used_connections | 歷史最大並發連接數 |
Created_tmp_disk_tables | 磁盤臨時表數(關鍵優化指標) |
Innodb_buffer_pool_reads | InnoDB 磁盤讀取次數 |
--create-schema 指定專用測試庫,避免污染業務庫mysqldumpslow 分析慢查詢日志top、iostat、vmstat 系統資源