Apache JMeter 不僅能壓測 HTTP,配合 JDBC 元件同樣能對資料庫進行負載測試。本文以圖文並茂方式,手把手教學從零建立 MySQL JDBC 測試計畫,涵蓋驅動配置、連線池、SQL 腳本、斷言驗證與結果視覺化。
| 元件 | 版本/來源 |
|---|---|
| MySQL | 5.1.51 (Windows Essential) |
| JDBC 驅動 | mysql-connector-java-5.1.x.jar (下載鏈接) |
| JMeter | 2.4+ (任意版本) |
前置資料: 測試表 test_table 已含樣本資料(可參考作者前文《Eclipse 批量插入》建立)。
mysql-connector-java-5.1.x.jar 載入類路徑。
| 欄位 | 範例值 | 說明 |
|---|---|---|
| Variable Name | dbConn | 供 JDBC Request 參考的變數名 |
| Database URL | jdbc:mysql://localhost:3306/test_db | JDBC 連線字串 |
| JDBC Driver Class | com.mysql.jdbc.Driver | MySQL 驅動主類 |
| Username / Password | root / 123456 | 資料庫帳密 |
| Max Number of Connections | 10 | 連線池上限,建議 ≥ 線程數 |
| Validation Query | SELECT 1 | 連線有效性檢查 |

dbConn(對應步驟 3)SELECT * FROM test_table WHERE id = ?${__Random(1,1000)} 隨機 ID。
success、^\d+$ 等。
右鍵「線程組」→ 新增 → 監聽器,建議組合:
| 監聽器 | 用途 |
|---|---|
| 查看結果樹 | 逐請求檢視請求/回應/斷言結果,除錯必備 |
| 圖形結果 | 即時繪製吞吐量/回應時間/誤差率曲線 |
| 彙總報告 / 統計報告 | 聚合統計:平均、中位數、90%/95%/99% 分位、錯誤率、吞吐量 |
| 結果斷言 | 專門顯示斷言成功/失敗統計 |

Ctrl+R。| 指標 | 健康基準 |
|---|---|
| 錯誤率 | 0% |
| 平均回應時間 | < 100ms (OLTP) |
| 95% 分位 | < 200ms |
| 吞吐量 | 視業務 SLA 而定 |

CSV Data Set Config 讀取測試資料檔,實現每執行緒不同參數。| 錯誤現象 | 原因 | 解決 |
|---|---|---|
| Cannot load JDBC driver class | jar 未載入/路徑錯誤 | 步驟 1 重新載入、檢查檔案存在 |
| Communications link failure | 資料庫不可達/埠錯誤/防火牆 | telnet 測試連通性、檢查 my.cnf bind-address |
| Connection pool exhausted | Max Connections 過小 | 調大連線池、檢查 SQL 是否未正確關閉連線 |
| 斷言失敗但 SQL 正確 | 結果集格式不符預期 | 用「查看結果樹」檢視實際回應結構 |
JMeter JDBC 測試讓資料庫效能驗證從「感覺快慢」進化為「數據說話」。掌握此技能,上線前跑一輪壓測,讓 MySQL 效能問題無所遁形。