作性能測試定位瓶頸的時候,定位到是由於某些 SQL 語句的查詢慢所影響的,此時咱們提出優化方案,確定但願驗證下優化後的 SQL,此時須要藉助 JMeter 的 JDBC 請求,那麼咱們就須要學習 JMeter 如何與 MySQL 進行整合測試。java
除了 JMeter 外,還須要準備如下軟件和 Jar 包:mysql
其中 MySQL 數據庫下載完成後,按照提示安裝便可,安裝完畢在 cmd 命令行,執行 net start mysql 將其啓動便可;固然這是驗證本身本地數據庫的操做,若是有遠程數據庫,那麼請忽略此操做。sql
JDBC 驅動直接放置在 Jmeter/lib 目錄下便可。數據庫
JMeter 測試 JDBC 請求,主要就是測試 SQL 查詢語句,那麼常見的查詢語句通常分爲如下幾種狀況:性能
下面咱們先來看第一種狀況。學習
JMeter 測試不帶條件的 SQL 語句測試
具體步驟以下:優化
(1)選中測試計劃,添加 mysql-connector-java-5.1.13-bin.jar:spa
(2)添加一個線程組:命令行
(3)在線程組下,添加一個 JDBC Connection Configuration(鏈接數據庫組件),專門用來配置所測試的數據庫鏈接信息:
配置信息以下:
(4)在線程組下,添加一個 JDBC Request,填寫真正的 JDBC 請求:
配置信息以下:
說明一點:這裏用到的 Query Type 爲:Select statement,這是一個查詢語句類型,若是在 Query 中查詢的是一條語句,就能夠採用這種查詢類型,可是當查詢語句多於一條的時候,就不能在使用此查詢類型,須要設置 Query Type 爲:Callable Statement。
另外:當 JDBC 腳本執行的時候,老是會優先去執行 Select statement 的第一行。
(5)在線程組下,添加查看結果樹,運行結果,查看是否成功:
完成以上操做,咱們已經能夠完成 JMeter 與 MySQL 的集成,而且能夠查詢 MySQL 數據庫;那麼若是咱們想要每次執行一次查詢,查詢出一列固定的內容,依次查詢出咱們須要的列時,就須要藉助參數化。
將查詢語句參數化
一說到參數化,在 JMeter 裏你們就應該想到 CSV Data Set config,本次依舊不例外。
具體步驟以下所示:
(1)在線程組下新增 CSV Data Set config,新建 txt 類型的文件,命名爲 jdbd.txt,其內容以下:
配置 CSV Data Set config 以下:
(2)將 JDBC Request 裏的 Query 語句設置爲:select ${jdbc} from cf_tb_sequence
:
(3)添加一個循環控制器,將循環次數設置爲2:
(4)運行後查看下結果樹。
第一個 JDBC 請求顯示的響應信息爲:
第二個 JDBC 請求顯示的響應信息爲:
通過參數化後,咱們能夠循環查詢每列的數據。
查詢指定條件的語句
有些時候咱們查詢時,須要使用帶 where 子句的查詢 SQL,在 JMeter 的 JDBC Request 中一樣能夠實現此功能。
即便用佔位符,來替換 SQL 語句中 where 子句指定的部分。
具體步驟以下:
(1)將 JDBC Request 請求中的 Query Type 修改成 Prepared Select Statement:
(2)在 Query 中將 SQL 語句的 where 子句中的參數數值都使用?號進行代替。
舉例:咱們想要使用以下 SQL 查詢語句:
select name,current_value from cf_tb_sequence where name = '0103' or current_value = '44';
咱們此時寫爲:
select name,current_value from cf_tb_sequence where name = ? or current_value = ?;
(3)在下方的 Parameter values 中把值填上,多個值用,分隔,數量與?保持一致(第一個值對應第一個?,以此類推便可):
(4)Parameter types 填爲 varchar,多個參數用,分隔,數量與?保持一致(無論什麼數據類型均填寫爲 varchar):
(5)禁用掉 CSV Data Set config,將循環控制器的循環次數變爲1,此時運行查看結果樹:
能夠看到咱們成功查詢出知足 select name,current_value from cf_tb_sequence where name = '0103' or current_value = '44'
的數據。
跟你們推薦一個學習資料分享羣:747981058,裏面大牛已經爲咱們整理好了許多的學習資料,有自動化,接口,性能等等的學習資料!人生是一個逆水行舟的過程,不進則退,我們一塊兒加油吧!