在快節奏的今天,不僅要完成工作,更要以最高效方式完成。資料庫領域同樣追求極致效能。IBM DB2 Universal Database 擁有領先的效能紀錄,但許多用戶因設計或配置缺失未能充分受益。本文介紹 Apache JMeter,一款基於 Java Swing 的桌面應用程式,專為負載測試與系統效能測量設計,支援透過 JDBC 測試關聯式資料庫,將其加入您的工具箱,協助掌握資料庫效能並進行模擬測試。
JMeter 屬於 Apache Jakarta 專案,最初針對 Web 應用,後擴展支援 JDBC 測試資料庫。官網:https://jakarta.apache.org/jmeter/。JMeter 多執行緒框架允許大量執行緒並發取樣,可對 DB2 模擬繁重負載,並提供圖形化回饋。
<jmeter安裝目錄>/jakarta-jmeter/lib:
c:\program files\ibm\sqllib\java\db2java.zip,需重命名為 db2java.jar(JMeter 無法識別 .zip)。db2jcc.jar 至 lib 目錄即可。在 DB2 CLP 執行:
create db loaddb
connect to loaddb user db2admin using db2admin
create table loadtable (col1 varchar(25) not null, col2 varchar(25) not null, col3 varchar(25) not null)
使用 JDBC 程式插入 30,000 筆測試記錄(列表 1):
package com.ibm.jmetertest;
import java.sql.*;
public class JMeterPopulator {
public static void main(String[] args) {
try {
Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");
String url = "jdbc:db2:loaddb";
Connection con = DriverManager.getConnection(url, "db2admin", "db2admin");
int numOfTestRecords = 30000;
PreparedStatement stmt = con.prepareStatement("INSERT INTO LOADTABLE VALUES(?,?,?)");
for (int i = 0; i < numOfTestRecords; i++) {
stmt.setString(1, "Col1Test-" + i);
stmt.setString(2, "Col2Test-" + i);
stmt.setString(3, "Col3Test-" + i);
stmt.executeUpdate();
System.out.println(i);
}
} catch (Exception e) { e.printStackTrace(); }
}
}
<jmeter目錄>/jakarta-jmeter/bin/jmeter.bat 啟動。TestPlan -> Add -> Thread Group 建立執行緒組(圖 1、2)。


右鍵執行緒組 -> Add -> Sampler -> JDBC Request(圖 4)。填入資料庫連線資訊:JDBC URL、驅動類別、用戶名/密碼、連線池設定、SQL 查詢語句(圖 5)。連線池維護一組連線供重複使用,Web 環境常見,可分析其優勢。


右鍵 JDBC Request -> Add -> Listener -> Graph Results(圖 6),即可在執行時以圖形顯示平均回應時間等指標。

選單 Run -> Start(圖 7)。右上角閃爍表示測試運行中。Graph Results 即時繪製平均執行時間曲線(圖 8)。


JMeter 錯誤報告功能較弱,建議使用 斷言 驗證回應內容。先在 CLP 執行查詢確認預期結果(圖 9)。右鍵 JDBC Request -> Add -> Assertions -> Response Assertion(圖 10),添加預期文本模式(如 Col1Test-20015,圖 11)。再添加 Assertion Results 監聽器(圖 12、13)。運行測試後可見斷言通過/失敗結果(圖 14、15)。







使用 File -> Save Test Plan 儲存測試計劃。JMeter 功能遠不止此,可建立複雜且有意義的測試計劃,以圖形與活動曲線快速提供系統效能可視化回饋,助您在調整企業營運條件下獲得最佳效能。
感謝 IBM 多倫多實驗室 Larry Menard 與 Robert 在 JDBC 專業領域的協助。