關於Jmeter中JDBC相關參數的應用

.數據庫驅動類和URL格式:mysql

Database 正則表達式

Driver class 算法

Database URL sql

MySQL 數據庫

com.mysql.jdbc.Driver apache

jdbc:mysql://host[:port]/dbname 緩存

PostgreSQL oracle

org.postgresql.Driver dom

jdbc:postgresql:{dbname} tcp

Oracle

oracle.jdbc.OracleDriver

jdbc:oracle:thin:@//host:port/service OR
        jdbc:oracle:thin:@(description=(address=(host={mc-name})(protocol=tcp)(port={port-no}))(connect_data=(sid={sid})))        

Ingres (2006)

ingres.jdbc.IngresDriver

jdbc:ingres://host:port/db[;attr=value]

SQL Server (MS JDBC driver)

com.microsoft.sqlserver.jdbc.SQLServerDriver

jdbc:sqlserver://host:port;DatabaseName=dbname

Apache Derby

org.apache.derby.jdbc.ClientDriver

jdbc:derby://server[:port]/databaseName[;URLAttributes=value[;...]]        

注:僅供參考

.相關參數

1.Variable Name

其中的Variable Name和上面JDBC Connection Configuration中的Variable Name相同,這裏表示JDBC Connection Configuration 創建一個名爲pubpool的鏈接池,以後其餘JDBC Request 都共用這個鏈接池。

2.SQL Query

(1)Query Type

xxx Statement須要填寫的sql是一句完整可執行的sql,而Prepared  xxx Statement容許用戶在sql中使用??而後再Parameter valuesParameter types中填寫參數和類型,最終執行時替代sql中的?,造成一句完整的sql語句。

Select statement:

##待驗證,網上找的例子:

若是SQL語句中須要使用參數變量,那麼Query Type 須要設置爲Select Statement ,須要先添加Random Variable,而後在Parameter Values中輸入${變量名稱},${變量名稱}

Paramter types中輸入變量的數據類型。 以下圖示:

中間用逗號分隔。只能執行第一個SQL語句。

Update statement: 對於InsertUpdateDelete語句,須要設置Query Type爲:Update Statament.數據修改語句中可使用參數,並且能夠順序執行多個修改語句。

Egg

Callable statement

##待驗證:

多個查詢語句(不使用參數的狀況下)能夠放在一塊兒順序執行,須要設置Query TypeCallable Statement,而後順序輸入select語句,不用加go或者分號。若是Query Type設置爲:Select Statement的話,只執行第一個SQL語句。

Prepared select statement:

Prepared update statement:

Commit

JDBC connection configuration中的自動提交爲false,執行更改,增長或刪除操做後,查詢數據並沒有更改,再添加一個JDBC Request,設置其Query Typecommit,再次查詢,以前的操做生效。

Rollback

JDBC connection configuration中的自動提交爲false,執行更改,增長或刪除操做後,查詢數據並沒有更改(至關於編輯沒保存), 再添加一個JDBC Request,設置其Query Typerollback(至關於編輯後撤銷),再次查詢,仍然沒有更改。

若是把JDBC connection configuration中的自動提交爲true,執行更改,增長或刪除操做後,查詢數據更改,但一旦事物被提交就沒法rollback

Autocommit(false)Autocommit(true):

JDBC connection configuration中的自動提交爲truefalse,是設置系統參數的默認值。添加一個JDBC Request,設置其Query Type Autocommittruefalse後(至關於修改系統參數),再進行對數據庫的增長、刪除、修改操做。

Edit:必須是對上述之一的結果的引用, 爲使用正則表達式的操做。

2Parameter values:表示咱們要添加的數據,須要不一樣數據添加可使用參數化

Parameter types爲上面須要輸入數據的類型,與上面的一一對應

Parameter valuesParameter types:成對出現,且sql語句中有多少個?,這裏就必須有多少對參數鍵值對,假設sql語句爲select * from ZMYW_USER  where ID=?,那麼能夠設置Parameter values${id}Parameter typesVARCHAR 

(3)Variable names:變量名稱,爲數據庫的字段名稱,有多個字段返回時,可使用逗號隔開,用於存放select操做返回的查詢結果 

Result variable name:用於存放select操做返回的查詢結果集。

3.擴展:

(1) 當選擇了"Prepared select statement"」Prepared update statement "Callable statement"的類型時,每一個鏈接的語句緩存使用 JDBC 請求。在默認狀況下將存儲每一個鏈接高達 100 Prepared Statements,這可能會影響您的數據庫 (打開的遊標)。這能夠經過定義"jdbc sampler.nullmarker"屬性更改。

(2)在實際的項目中,至少有2種類型的JDBC請求須要關注:select語句和存儲過程。前者反應了select語句是否高效,以及表的索引等是否須要優化;後者則是反應存儲過程的算法是否高效。它們若是效率低下,必然會帶來響應上的不盡如人意。對於這兩種請求,JDBC請求的配置略有區別。


1Query TypeSelect Statement時,對應執行代碼爲:stmt = conn.createStatement(); 

ResultSet rs = null; 

rs = stmt.executeQuery(sql); 

return getStringFromResultSet(rs).getBytes(ENCODING); 

2Query TypeCallable Statement時,對應執行代碼爲:CallableStatement cstmt = getCallableStatement(conn); 

int out[]=setArguments(cstmt); 

boolean hasResultSet = cstmt.execute(); 

String sb = resultSetsToString(cstmt,hasResultSet, out); 

return sb.getBytes(ENCODING); 

3Query TypeUpdate Statement時,對應執行代碼爲:stmt = conn.createStatement(); 

stmt.executeUpdate(sql); 

int updateCount = stmt.getUpdateCount(); 

String results = updateCount + " updates"; 

return results.getBytes(ENCODING); 

4Query TypePrepared Select Statement時,對應執行代碼爲:PreparedStatement pstmt = getPreparedStatement(conn); 

setArguments(pstmt); 

ResultSet rs = null; 

rs = pstmt.executeQuery(); 

return getStringFromResultSet(rs).getBytes(ENCODING); 

5Query TypePrepared Update Statement時,對應執行代碼爲:

PreparedStatement pstmt = getPreparedStatement(conn); 

setArguments(pstmt); 

pstmt.executeUpdate(); 

String sb = resultSetsToString(pstmt,false,null); 

return sb.getBytes(ENCODING); 

6Query TypeRollback時,對應執行代碼爲:

   conn.rollback(); 

return ROLLBACK.getBytes(ENCODING); 

7Query TypeCommit時,對應執行代碼爲:

conn.commit(); 

return COMMIT.getBytes(ENCODING); 

8Query TypeAutoCommit(false)時,對應執行代碼爲:conn.setAutoCommit(false); 

return AUTOCOMMIT_FALSE.getBytes(ENCODING); 

9Query TypeAutoCommit(true)時,對應執行代碼爲:

conn.setAutoCommit(true); 

return AUTOCOMMIT_TRUE.getBytes(ENCODING); 

10)其它狀況直接拋異常:throw new UnsupportedOperationException("Unexpected query type: "+_queryType);

相關文章
相關標籤/搜索