JDBC操作
jdbc操作包括jdbc的連接與數據庫操作,主要用於數據初始化和事後數據清洗
準備: 連接前需要下載驅動jar包,mysql爲例,先下載mysql-connector-java-x.x.x-bin.jar,把mysql-connector-java-x.x.x-bin.jar放到Jmeter安裝目錄下的lib目錄下
下載地址: https://www.mysql.com/products/connector/
1. JDBC Connection Configuration
位置: 添加-配置元件-JDBC Connection Configuration
參數說明:
Variable Name: 數據庫連接的別名,在後面JDBC Request中也有一個叫做“Variable name”的變量名稱,需要關聯起來,主要作用用於當多數據源時候區分數據源。
Max Number of Connections: 線程池中允許的最大連接數
Max Wait(ms):在連接池中取回連接最大等待時間
Time Between Eviction Runs (ms):連接空閒回收時間,如果當前連接池中某個連接在空閒了time Between Eviction Runs Millis時間後任然沒有使用,則被物理性的關閉掉。
Auto Commit:自動提交sql語句
transaction isolation:事務隔離級別
- TRANSACTION_NODE 事務節點
- TRANSACTION_READ_UNCOMMITTED 事務未提交讀
- TRANSACTION_READ_COMMITTED 事務已提交讀
- TRANSACTION_SERIALIZABLE 事務序列化
- DEFAULT 默認
- TRANSACTION_REPEATABLE_READ 事務重複讀
Test While Idle :當空閒的時候測試連接是否斷開
Soft Min Evictable Idle Time(ms) :最少的時間連接可能在池中閒置,然後纔有資格被閒置的對象驅逐出去,額外的條件是至少在池中保持連接。默認值爲5000(5秒)
Validation Query :驗證查詢 。一個簡單的查詢,用來確定數據庫是否仍在響應
Database URL:數據庫url,jdbc:mysql://localhost:3306/test?characterEncoding=utf-8
JDBC Driver class:JDBC驅動
username:數據庫登陸的用戶名
passwrod:數據庫登陸的密碼
2. JDBC Request
位置: 添加-Sampler-JDBC Request
參數說明:
Variable Name:數據庫連接池的名字,需要與JDBC Connection Configuration中需要查詢的數據庫的Variable Name名字保持一致
Query Type:sql操作類型(10種類型)
- Select statement 查詢語句,只能執行一條查詢語句(多個查詢語句只執行第一條語句,需要查詢多個type爲Callable Statement)
- Update statement 包含insert和update的更新語句(多個更新語句只執行第一條語句,需要更新多個type爲Callable Statement)
- Callable statement 存儲結構調用方式 , 調用方式 call 存儲過程名(?,?)
- Prepared select statement 對於多次執行的查詢SQL語句,並且參數需要循環參數化, sql語句可用?佔位符(如select * from table where user = ? and age = ? 時候, Parameter types可以填寫 ${name},${age} Parameter types填寫VARCHAR,Integer)
- Prepared update statement 同上
- Commit 將未存儲的SQL語句結果寫入數據庫表
- Rollback 撤銷指定SQL語句
- AutoCommit(false) 禁止自動提交模式,MySQL默認操作模式就是autocommit自動提交模式
- AutoCommit(true) 無論何種情況,都自動提交將結果寫入,結束當前事務開始下一個事務。
- 編輯(${})jmeter中的JDBC請求中的SQL語句是無法使用參數的,比如: SELECT * FROM ${table_name} 是無效的。如果需實現同時多個不同用戶使用不同的SQL,可以通過把整條SQL語句參數化來實現;(把SQL語句放在csv文件中,然後在JDBC Request的Query 中使用參數代替 ${SQL_Statement})
Query:填寫的sql語句地方(如果只有單條SQL,則不要添加分號,如果有多條,需要在不是最後一條的其他sql結尾處加分號)
Parameter valus:參數值
Parameter types:參數類型,可參考:Javadoc for java.sql.Types
Variable names:保存sql語句返回結果的變量名
Result variable name:創建一個對象變量,保存所有返回的結果
Query timeout:查詢超時時間
Handle result set:定義如何處理由callable statements語句返回的結果