JMeter連接Mysql數(shù)據(jù)庫的實(shí)現(xiàn)步驟
JMeter連接mysql數(shù)據(jù)庫是很方便的,下面就演示一下具體的操作。
首先,在本地安裝好mysql服務(wù)器,建立庫和表,并準(zhǔn)備數(shù)據(jù)以供測試使用。

接下來,在【測試計(jì)劃】中添加JDBC驅(qū)動,即下載mysql-connector-bin.jar并添加到classpath中。如下圖所示:

當(dāng)然,如果將這個jar包直接放在JMeter安裝目錄的lib文件夾中,就無需在【測試計(jì)劃】中添加了。
當(dāng)上面的準(zhǔn)備工作完成后,就可以在線程組下添加一個【配置元件】–【JDBC Connection Configuration】

參數(shù)詳解:
| 名稱 | 描 述 | 必須 |
|---|---|---|
| Name | 腳本中顯示的這個元件的描述性名稱 | 是 |
| Variable Name for created pool | 連接所綁定的變量名??梢詣?chuàng)建多個連接,每個連接綁定到不同的變量名,后續(xù)【JDBC Request】通過對應(yīng)variable name使用相應(yīng)的連接 | 是 |
| Max Number of Connections | 連接池最大允許連接數(shù)。默認(rèn)設(shè)置為0,代表每個線程獲得自己的連接池。如果使用共享連接池,將其設(shè)置成與線程數(shù)相同即可 | 是 |
| Max Wait (ms) | 超時時間。如果嘗試連接的過程超過了這個時間,則拋出異常并停止連接 | 是 |
| Time Between Eviction Runs (ms) | 運(yùn)行狀態(tài)下,空閑對象回收線程休眠時間。如果設(shè)為負(fù)數(shù),空閑對象回收線程將不會運(yùn)行 | 是 |
| Auto Commit | 自動提交開關(guān),true代表開啟 | 是 |
| Transaction isolation | 事務(wù)隔離,一般使用默認(rèn)即可 | 是 |
| Test While Idle | 當(dāng)連接空閑時是否進(jìn)行測試 | 是 |
| Soft Min Evictable Idle Time(ms) | 連接可以在池中處于空閑狀態(tài)的最短時間,超過這個時間的空閑連接才會被回收 | 是 |
| Validation Query | 用于確定數(shù)據(jù)庫是否仍在響應(yīng)的簡單查詢 | 否 |
| Database URL | 數(shù)據(jù)庫的JDBC連接串 | 是 |
| Username | 數(shù)據(jù)庫連接的用戶名 | 是 |
| Password | 數(shù)據(jù)庫連接的密碼 | 是 |
添加【JDBC Request】

最終腳本結(jié)構(gòu)完成,運(yùn)行腳本,結(jié)果如下:

再看Debug Sampler中:

可以看到,sql查詢結(jié)果存儲在變量中,例如name的變量,name_#=3,表示sql語句name字段有3個結(jié)果,name_1、name_2、name_3,在腳本后續(xù)想使用這些值時用${variable name}引用,例如用${name_1}即可使用"Tom"這個值。
以上便是JMeter操作mysql數(shù)據(jù)庫的常規(guī)用法,已經(jīng)能滿足大部分使用情況,畢竟測試中一般只會進(jìn)行查庫操作,很少寫庫。但有時候我們難免遇到一次性執(zhí)行多種類型sql語句(類似事務(wù))的場景,按照上文中的寫法,是實(shí)現(xiàn)不了的。
要實(shí)現(xiàn)這個功能,有兩種方案,首先看方案一。
【JDBC Connection Configuration】配置頁面,Database URL:jdbc:mysql://localhost:3306/hkkTest后添加?allowMultiQueries=true

【JDBC Request】的【Query Type】選擇Callable Statement,然后將多條sql語句按順序?qū)懞茫織l語句要以分號結(jié)尾。

運(yùn)行后,查看結(jié)果:

再說方案二。
方案二使用的前提是,mysql服務(wù)器上已經(jīng)建好相應(yīng)的存儲過程并執(zhí)行,如下例:
delimiter $$; # 存儲過程后面必須有() CREATE PROCEDURE user_procedure() BEGIN UPDATE test.user SET age=24 WHERE name='Tom'; INSERT INTO test.user(id,name,age,address) VALUES(4,'Lucy',17,'Paris'); INSERT INTO test.user(id,name,age,address) VALUES(5,'Messi',32,'Barcelona'); DELETE FROM test.user WHERE name='Jack'; SELECT * FROM test.user; END $$; delimiter;
然后,【JDBC】中【Query Type】同樣選擇Callable Statement,sql語句只寫上調(diào)用存儲過程的語句即可。

運(yùn)行腳本,查看結(jié)果,可以看到存儲過程已經(jīng)被執(zhí)行,數(shù)據(jù)庫數(shù)據(jù)被修改成功:

至此,JMeter操作mysql數(shù)據(jù)庫的部分完結(jié)。
到此這篇關(guān)于JMeter連接Mysql數(shù)據(jù)庫的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)JMeter連接Mysql 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringMVC JSON數(shù)據(jù)傳輸參數(shù)超詳細(xì)講解
有時候參數(shù)的傳遞還需要更多的參數(shù),比如一個獲取用戶信息的請求中既有用戶ID等基本參數(shù),還要求對查詢結(jié)果進(jìn)行分頁,針對這種場景,一般都會將分頁參數(shù)封裝成一個對象,然后將它和基本參數(shù)一起傳給控制器2023-02-02
java?Object的hashCode方法的計(jì)算邏輯分析
這篇文章主要介紹了java?Object的hashCode方法的計(jì)算邏輯分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
Spring依賴注入的兩種方式(根據(jù)實(shí)例詳解)
這篇文章主要介紹了Spring依賴注入的兩種方式(根據(jù)實(shí)例詳解),非常具有實(shí)用價值,需要的朋友可以參考下2017-05-05

