首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

mysqlslap MySQL 壓力測試工具實戰指南

     編輯:MySQL 資料庫相關知識

工具定位

MySQL 5.1.4+ 內置,模擬多併發客戶端負載,支持自動生成測試表/數據或自定義 SQL,輸出 TPS、QPS、延遲等核心指標。

核心參數速查表

參數短參說明典型值
--auto-generate-sql-a自動生成測試表結構與數據必加
--auto-generate-sql-load-type負載類型:read/write/update/key/mixedmixed
--concurrency-c併發客戶端數,支持逗號分隔多值50,100,200
--iterations-i每組併發重複測試次數(取平均)5-10
--number-of-queries總查詢數 = 併發數 × 每客戶查詢數1000
--engine-e測試表存儲引擎,可多值對比innodb,myisam
--create-schema指定測試庫(會自動建庫建表)test_db
--query-q自定義 SQL 文件/語句(替代自動生成)./load.sql
--debug-info-T輸出 CPU/內存佔用可選
--only-print僅打印生成的 SQL 不執行調試用
--number-int-cols / --number-char-cols-y / -x自動生成表的 int/char 列數各 1-5

實戰演練三部曲

第一階段:基線測試(自動生成)

# 單線程基線
mysqlslap -a -u root -p --create-schema=bench --engine=innodb

# 併發壓測
mysqlslap -a -c 100 -u root -p --create-schema=bench --engine=innodb

# 多輪迭代取平均
mysqlslap -a -c 100 -i 5 -u root -p --create-schema=bench --engine=innodb

第二階段:多維度對比

# 讀寫負載對比
mysqlslap -a --auto-generate-sql-load-type=read -c 50,100 -i 3 -u root -p
mysqlslap -a --auto-generate-sql-load-type=write -c 50,100 -i 3 -u root -p

# 引擎對比
mysqlslap -a -c 100 -i 5 --engine=innodb,myisam --create-schema=bench -u root -p

# 併發梯度 + 總查詢數固定
mysqlslap -a --concurrency=50,100,200 --number-of-queries=10000 -i 5 -u root -p

第三階段:業務真實負載(自定義 SQL)

# 1. 準備 SQL 文件(每行一條,包含參數佔位符 ?)
cat > workload.sql <<'EOF'
SELECT * FROM orders WHERE user_id = ? AND status = ?;
UPDATE accounts SET balance = balance - ? WHERE id = ?;
INSERT INTO logs (action, uid, ctime) VALUES (?, ?, NOW());
EOF

# 2. 執行壓測(需配合 --csv 或程序化參數綁定,mysqlslap 原生不支持參數化)
# 實際生產建議使用 sysbench / go-tpc / 自研壓測平台支持參數化
mysqlslap --query=workload.sql --create-schema=bench -c 100 -i 5 -u root -p

輸出結果解讀

Benchmark
    Average number of seconds to run all queries: 2.453 seconds
    Minimum number of seconds to run all queries: 2.312 seconds
    Maximum number of seconds to run all queries: 2.678 seconds
    Number of clients running queries: 100
    Average number of queries per client: 100

# 關鍵衍生指標
QPS = 總查詢數 / 平均耗時 = 10000 / 2.453 ≈ 4077
TPS = 視事務定義而定
平均延遲 = 平均耗時 / 總查詢數 × 併發數 ≈ 24.5 ms

進階技巧與避坑

  1. 預熱:首輪測試結果偏高,建議丟棄第一輪或增加 --iterations
  2. 隔離環境:專用測試實例,避免干擾生產/開發庫
  3. 數據量級:自動生成數據量極小(默認 100 行),真實壓測需先導入生產級數據量再用 --query
  4. 參數化缺失:mysqlslap 不支持預處理參數綁定,複雜業務壓測請用 sysbench(Lua 腳本)或 go-tpc
  5. 監控聯動:壓測同時觀察 SHOW ENGINE INNODB STATUS、Performance Schema、系統負載

工具選型建議

工具優勢適用場景
mysqlslap零安裝、語法簡單、快速基線快速驗證參數調優效果、簡單讀寫負載
sysbenchLua 腳本靈活、支持事務/參數化、OLTP 基準標準標準化基準測試、複雜業務邏輯壓測
go-tpcTPC-C/TPC-H 標準負載、分佈式協調企業級基準測試、分佈式數據庫評估
自研平台全鏈路可控、業務語義精準、CI/CD 集成核心業務回歸性能測試、發布質量閘

mysqlslap 是入門級壓測利器,善用多併發梯度、多引擎對比、迭代取平均,可快速產出可信的性能基線報告。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved