當前位置:
首頁 > 知識 > JMeter 測試 MySQL 資料庫

JMeter 測試 MySQL 資料庫

做性能測試定位瓶頸的時候,定位到是因為某些 SQL 語句的查詢慢所影響的,此時我們提出優化方案,肯定希望驗證下優化後的 SQL,此時需要藉助 JMeter 的 JDBC 請求,那麼我們就需要學習 JMeter 如何與 MySQL 進行整合測試。

環境準備

除了 JMeter 外,還需要準備以下軟體和 Jar 包:

  • MySQL 資料庫服務端;
  • MySQL 的 JDBC 驅動 mysql-connector-java-5.1.13-bin.jar;

其中 MySQL 資料庫下載完成後,按照提示安裝即可,安裝完畢在 cmd 命令行,執行 net start mysql 將其啟動即可;當然這是驗證自己本地資料庫的操作,如果有遠程資料庫,那麼請忽略此操作。

JDBC 驅動直接放置在 Jmeter/lib 目錄下即可。

JMeter 測試 JDBC 請求

JMeter 測試 JDBC 請求,主要就是測試 SQL 查詢語句,那麼常見的查詢語句一般分為以下幾種情況:

  • 直接查詢:即 select * form table;
  • 帶 where 子句的查詢:select a,b from table where a=""。

下面我們先來看第一種情況。

JMeter 測試不帶條件的 SQL 語句

具體步驟如下:

(1)選中測試計劃,添加 mysql-connector-java-5.1.13-bin.jar:

JMeter 測試 MySQL 資料庫

打開今日頭條,查看更多精彩圖片

(2)添加一個線程組:

JMeter 測試 MySQL 資料庫

(3)在線程組下,添加一個 JDBC Connection Configuration(連接資料庫組件),專門用來配置所測試的資料庫連接信息:

JMeter 測試 MySQL 資料庫

配置信息如下:

JMeter 測試 MySQL 資料庫

(4)在線程組下,添加一個 JDBC Request,填寫真正的 JDBC 請求:

JMeter 測試 MySQL 資料庫

配置信息如下:

JMeter 測試 MySQL 資料庫

說明一點:這裡用到的 Query Type 為:Select statement,這是一個查詢語句類型,如果在 Query 中查詢的是一條語句,就可以採用這種查詢類型,但是當查詢語句多於一條的時候,就不能在使用此查詢類型,需要設置 Query Type 為:Callable Statement。

另外:當 JDBC 腳本執行的時候,總是會優先去執行 Select statement 的第一行。

(5)在線程組下,添加查看結果樹,運行結果,查看是否成功:

JMeter 測試 MySQL 資料庫

完成以上操作,我們已經可以完成 JMeter 與 MySQL 的集成,並且可以查詢 MySQL 資料庫;那麼如果我們想要每次執行一次查詢,查詢出一列固定的內容,依次查詢出我們需要的列時,就需要藉助參數化。

將查詢語句參數化

一說到參數化,在 JMeter 里大家就應該想到 CSV Data Set config,本次依舊不例外。

具體步驟如下所示:

(1)在線程組下新增 CSV Data Set config,新建 txt 類型的文件,命名為 jdbd.txt,其內容如下:

JMeter 測試 MySQL 資料庫

配置 CSV Data Set config 如下:

JMeter 測試 MySQL 資料庫

(2)將 JDBC Request 里的 Query 語句設置為:select ${jdbc} from cf_tb_sequence:

JMeter 測試 MySQL 資料庫

(3)添加一個循環控制器,將循環次數設置為2:

JMeter 測試 MySQL 資料庫

(4)運行後查看下結果樹。

第一個 JDBC 請求顯示的響應信息為:

JMeter 測試 MySQL 資料庫

第二個 JDBC 請求顯示的響應信息為:

JMeter 測試 MySQL 資料庫

經過參數化後,我們可以循環查詢每列的數據。

查詢指定條件的語句

有些時候我們查詢時,需要使用帶 where 子句的查詢 SQL,在 JMeter 的 JDBC Request 中同樣可以實現此功能。

即使用佔位符,來替換 SQL 語句中 where 子句指定的部分。

具體步驟如下:

(1)將 JDBC Request 請求中的 Query Type 修改為 Prepared Select Statement:

JMeter 測試 MySQL 資料庫

(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 = ?;

JMeter 測試 MySQL 資料庫

(3)在下方的 Parameter values 中把值填上,多個值用,分隔,數量與?保持一致(第一個值對應第一個?,以此類推即可):

JMeter 測試 MySQL 資料庫

(4)Parameter types 填為 varchar,多個參數用,分隔,數量與?保持一致(不管什麼數據類型均填寫為 varchar):

JMeter 測試 MySQL 資料庫

(5)禁用掉 CSV Data Set config,將循環控制器的循環次數變為1,此時運行查看結果樹:

JMeter 測試 MySQL 資料庫

可以看到我們成功查詢出滿足 select name,current_value from cf_tb_sequence where name = "0103" or current_value = "44"的數據。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

做程序員累的時候怎麼辦?
使用systemtap調試工具分析MySQL的性能

TAG:程序員小新人學習 |