Jmeter同樣可以測試數據庫的性能,通過執行增刪改查的語句,以下舉的是oracle的例子
Step 1: 下載ojdbc14.jar包放到Jmeter lib包中,在test plan中配置,並且重啟Jmeter

Step 2:配置JDBC Connection Configuration

Variable Name,數據庫連接池的變量名,之后JDBC request可以通過選擇不同的連接池名來選擇不同的數據庫連接
Max Number of Connections,該數據庫連接池的最大連接數,一般設置為0,意思是每個線程都使用單獨的數據庫連接,線程之間數據庫連接不共享
下面這塊,是Jmeter用來檢驗數據庫連接是否有效的一種機制,超過5秒沒有使用的話,就會用validation query去測試下這個連接是否有效

Database URL,jdbc:oracle:thin:@//hostname:port/sid 前面的jdbc:oracle:thin:@部分是固定的
JDBC Driver class,oracle固定為oracle.jdbc.OracleDriver,其他數據庫可以查看幫助
Step 3:建立一個JDBC Request組件

目前JDBC Request可以發送的請求類型有
- Select Statement
- Update Statement - use this for Inserts and Deletes as well
- Callable Statement
- Prepared Select Statement
- Prepared Update Statement - use this for Inserts and Deletes as well
- Commit
- Rollback
- Autocommit(false)
- Autocommit(true)
- Edit - this should be a variable reference that evaluates to one of the above
我這里舉了一個存儲過程的例子
首先Variable Name要寫之前創建好的數據庫連接池的名字
SQL Query部分,選擇Query Type為callable statement,語句中用問號作為占位符,代替傳入的參數
然后在Parameter value里面設置傳入的值,這里也可以用變量,即可以讀csv文件里的值,比較靈活,但是千萬要記得在下面一行Parameter Types里面配置好相應的類型,否則會報錯
Variable Name,可以用來存儲查詢的值,例如你查詢select * from tableA,返回三行三列,你在Variable Name里面寫A,,C,那么會返回如下值,第二列由於沒有變量名,所以不會被存儲,不過需要一個空占位符
A_#=2 (number of rows)
A_1=column 1, row 1
A_2=column 1, row 2
C_#=2 (number of rows)
C_1=column 3, row 1
C_2=column 3, row 2
Result Variable name,用法 columnValue = vars.getObject("resultObject").get(0).get("Column Name"); 將結果集存儲在一個對象中,然后按照行號加列名去取值
