jmeter連接數據庫操作


JDBC Connection Configuration 數據庫連接配置

數據庫連接配置器,用來連接數據庫,是一個連接池。 界面介紹

1.右鍵線程組->添加->配置元件->JDBC Connection Configuration

  • Variable Name for created pool:數據庫連接池的名稱,我們可以有多個jdbc connection configuration,每個可以起個不同的名稱,在jdbc request中可以通過這個名稱選擇合適的連接池進行使用。

  • Max Number of Connections:連接池的最大連接數,在大多數情況下,將其設置為零(0)。這意味着每個線程將獲得其自己的池,其中包含單個連接,即線程之間不共享連接。如果你真的想使用共享池),那么將最大鏈接數設置為與線程數相同,以確保線程不會相互等待。

  • Max Wait (ms):最大超時間

  • Time Between Eviction Runs (ms) :空閑連接池清理的時間間隔。

  • Auto Commit:事務是否自動提價選項,比如Oracle執行一條更新操作,不Commit一下,數據不會更新到數據庫中的,這個選項幫我們自動提交。

  • Transaction Isolation:JDBC事務控制 數據庫的事務控制ADIC傳送門

    • TRANSACTION_NONE:不支持的事務,TRANSACTION-NONE=0

    • TRANSACTION_READ_UNCOMMITEED:允許臟讀,不可重復讀和幻讀

    • TRANSACTION_READ_COMMITEED:禁止臟讀,允許不可重復讀和幻讀

    • TRANSACTION_REPEATABLE_READ:禁止臟讀和不可重復讀,允許幻讀

    • TRANSACTION_SERILIZABLE:禁止臟讀,不可重復讀和幻讀

    • DEFAULT:JMETER設定的。默認值是1,其實是TRANSACTION_READ_COMMITEED 禁止臟讀,允許不可重復讀和幻讀。

    • 什么是臟讀,不可重復讀,幻讀

臟讀:一個事務讀取另外一個事務未提交的數據。 不可重復讀:一個事務再次讀取之前的數據時,這個數據已經被另外一個事務修改。 幻讀:一個事務重新執行一個查詢,返回的記錄包含了其他事務提交的新紀錄。
  • Test While Idle:測試池的空閑連接,請參閱BasicDataSource.html#getTestWhileIdle。查詢驗證。

  • Soft Min Evictable Idle Time(ms):

  • Validation Query:驗證SQL的語法

  • Database URL:數據庫地址,以下為不同數據庫的連接方式

MySQL
Driver class
com.mysql.jdbc.Driver
Database URL
jdbc:mysql://host[:port]/dbname

PostgreSQL
Driver class
org.postgresql.Driver
Database URL
jdbc:postgresql:{dbname}

Oracle
Driver class
oracle.jdbc.OracleDriver
Database URL
jdbc:oracle:thin:@//host:port/service OR jdbc:oracle:thin:@(description=(address=(host={mc-name})(protocol=tcp)(port={port-no}))(connect_data=(sid={sid})))

Ingress (2006)
Driver class
ingres.jdbc.IngresDriver
Database URL
jdbc:ingres://host:port/db[;attr=value]
Microsoft SQL Server (MS JDBC driver)
Driver class
com.microsoft.sqlserver.jdbc.SQLServerDriver
Database URL
jdbc:sqlserver://host:port;DatabaseName=dbname
Apache Derby
Driver class
org.apache.derby.jdbc.ClientDriver
Database URL
jdbc:derby://server[:port]/databaseName[;URLAttributes=value[;…]]
  • JDBC Driver class:數據庫類型,數據庫的驅動包需要放到/lib目錄下,使用mysql依賴mysql-connector-java-8.0.13.jar下載地址

  • Username:用戶名

  • Password:密碼

JDBC Request JDBC 請求

數據庫連接配置器,用來連接數據庫,是一個連接池。 界面介紹

右鍵線程組->添加->取樣器->JDBC Request

 

 

  • Variable Name of Pool declared in JDBC Connection Configuration(必須) :連接池綁定的JMeter變量的名稱。這必須與JDBC連接配置的“變量名稱”字段一致。

  • Query Type:查詢類型,根據語句設置查詢的類型

    • Select Statement:執行查詢語句的時候使用。可以使用${}引入參數,不可使用占位符進行參數化
    • Update Statement :執行更新操作的時候用到,包括插入與修改。可以使用${}引入參數,不可使用占位符進行參數化。
    • Callable Statement:對應JDBC規范中的CallableStaenent對象,它為所有的DBMS提供了一種以標准形式調用存儲過程的方法,白話就是可以調用存儲過程,也就是可以有入參,有占位符。可以使用${}引入參數,也可以使用占位符引入參數。
    • Prepared Select Statement:預編譯查詢語句,與Select Statement相比效率更好,可以使用${}引入參數,可以使用占位符引入參數。
    • Prepared Update Statement:預編譯更新語句,包括查詢與插入,與Update Statement 效率更好,支持占位符引入參數。 可以使用${}引入參數,可以使用占位符引入參數。
    • Commit:當前連接狀態中的內容提交,查詢語句中的SQL在執行完成后馬上提交,使用該項時JDBC Connection Configuration 中的 Auto commint 選項為False。可以使用${}引入參數,可以使用占位符引入參數。
    • Rollback:當前連接狀態中的內容可回滾。可以使用${}引入參數,可以使用占位符引入參數。
    • Autocommit(false):指明不要自動提交,如果JDBC Connection Configuration 中的 Auto commint為true 覆蓋該選項。可以使用${}引入參數,可以使用占位符引入參數。
    • Autocommit(true):指明允許自動提價。可以使用${}引入參數,可以使用占位符引入參數。
    • Edit :變量應用,引用的為上述的任意一個變量
  • SQL Query SQL查詢語句,不需要輸入行尾的分好

  • Parameter values:參數值,多個值用,分割

  • Parameter types:參數類型,INTEGER, DATE, VARCHAR, DOUBLE

  • Variable Names:SQL的執行語句往往返回的是一個數據集,我們可以把它保存的變量中,讓后面的元件調用。

  • Result variable name :上面的 Variable Names中額變量是個數與隊列對應的,Result variable name創建一個數組,保存所有返回的結果。

  • Query timeout:定義查查詢時間

  • Handle result set:定義如何處理由callable- statements語句返回的結果

實例1 連接mysql數據庫 ,並查詢數據庫的表

  • 連接mysql數據庫,

    • 定義數據庫連接池名稱:MYSQL
    • URL:jdbc:mysql://rm-wz955w1jr2dnj6u9bo.mysql.rds.aliyuncs.com:3306/majiang
    • JDBC Driver class:com.mysql.jdbc.Driver
    • Username:
    • Password:

 

 查詢全部表 :

 

 查詢結果 :

 

 實例2 對查詢數據進行參數化

  • 使用${}引入參數 用戶自定義的變量添加用戶昵稱變量nickname

 

  • 查詢語句中使用通過${nickanme}引入變量, 注意加括號,不然報錯

 

 

  • 通過占位符?引入變量 Parameter values:hunan%, 9586 Parameter types:VARCHAR,INTEGER 查詢語句
select Nike, id, unionid, openid from user where Nike like ?  and openid=?

 

 

 

 實例3 、引用返回的的結果

  • 通過設置Variable Names來保存變量 查詢語句
select Nike, id, unionid, openid from user where Nike like ?      and openid<?

我們的查詢語句中指定了4個返回的值,也就是說會返回4個列。在Variable Names 設置A,B,C,DA保存第一列的數據,B保存第二列的數據以此類推。那么如下變量會被設置為。

A_#=2 (總行數)
A_1=第1列, 第1行
A_2=第1列, 第2行 
C_#=2 (總行數) 
C_1=第3列, 第1行
C_2=第3列, 第2行

如果返回結果為0,那么A_#C_#會被設置為0,其它變量不會設置值。如果第一次返回6行數據,第二次只返回3行數據,那么第一次那多的3行數據變量會被清除。可以使用可以使用${A_#}, ${A_1}...來獲取相應的值

 

使用Beanshell Sampler 輸出結果:

 

 

 日志結果:

 

請求返回的結果:

 

 

  • 通過Result variable name保存結果,Result variable name會將返回的結果保存為數組,通過vars.getObject("result").get(0).get("Nike")獲取值 

 

 輸出語句:

 

 執行結果:

 

  •  在http元件中使用結果,通過函數__jexl3()執行vars.getObject("result").get(0).get("Nike")


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM