二十一、JMeter實戰-通過JDBC Request向數據庫批量插入、刪除數據


工作場景

做性能測試之前,一般要准備一些鋪底數據,比如插入五萬條數據;還有就是做接口測試,先進行數據初始化,先插入部分數據。
批量插入數據,要注意的點:

  1. 主鍵ID不能重復,可以利用隨機函數解決
  2. 涉及到同時執行多條sql語句的,要在Database URL后加入:allowMultiQueries=true,表示允許批量操作數據;
  3. 在Query Type中選擇Callable statement



遇到的問題:

  1. Can not issue data manipulation statements with executeQuery()

原因:這個報錯是Query Type選擇錯導致的





  1. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO
    提示語法錯誤,但是在Navicat中執行過該語句,確認沒問題。

原因:Database URL中還要設置允許數據批量操作



  1. 插入的數據中文亂碼

針對以上場景以及出現的問題,現在就拿一個實際例子來說明,具體的操作。



一、配置好JDBC Connection Configuration

按照前面的文檔,配置好數據庫連接配置,然后需要在Database URL后加入以下內容

?allowMultiQueries=true&characterEncoding=UTF-8

一個是用來大量數據操作,一個是設置字符集格式為:UTF-8



二、JDBC Request選擇Callable statement

Query Type(SQL語句類型)包含了很多數據類型,下面講解幾個常用的數據類型

1、Select statement
這是一個查詢語句類型;如果JDBC Request中的Query內容為一條查詢語句,則選擇這種類型。

2、Update statement
這是一個更新語句類型(包含insert和update),如果JDBC Request中的Query內容為一條更新語句,則選擇這種類型。如果是每條sql語句之間用逗號隔開。

3、Callable statement
這是一個可調用語句類型,只要語法正確,任何語句,再多的條數都能支持,所以查詢或者插入數據,進行多個sql語句操作,那么就要選擇Callable statement。插入多條sql語句,則要現在Callable statement。

通過sql語句插入一個學校:

INSERT INTO `t_login_account` VALUES ('10208', '208', '10208', '8A0576BE2EF5CE5FF8C380CD910944B8', '2020-05-21 18:04:20', '20', null, '1', null);
INSERT INTO `t_school_info` VALUES ('208', 'test深圳208', null, '1', null, null, null, '1', '3', '1', '2020-05-26 08:00:00', '2020-08-31 08:00:00', null, null, null, null, '1', '', '10000', '2020-05-18 10:49:51', '10178', '2020-05-18 15:05:20', '1', '2020-05-26 08:00:00', '2020-08-31 08:00:00');
INSERT INTO `t_school_schooltype` VALUES ('208', '208', '1');

上面是插入單條數據,使用不方便,下面就行參數化


1.加一個隨機變量

當然也可以使用jmeter的隨機變量


設置一下隨機變量,記好變量名



2.JDBC Request中引用變量

變量的引用要根據實際情況,自己先要搞清楚數據表之間的聯系,以及每個字段的意思,一般主鍵id進行隨機。一下sql語句就是進行插入數據的參數化。

INSERT INTO `t_login_account` VALUES ('10${id}', '${id}', '10${id}', '8A0576BE2EF5CE5FF8C380CD910944B8', '2020-05-21 18:04:20', '20', null, '1', null);
INSERT INTO `t_school_info` VALUES ('${id}', 'test深圳${id}', null, '1', null, null, null, '1', '3', '1', '2020-05-26 08:00:00', '2020-08-31 08:00:00', null, null, null, null, '1', '', '10000', '2020-05-18 10:49:51', '10178', '2020-05-18 15:05:20', '1', '2016-05-26 08:00:00', '2016-08-31 08:00:00');
INSERT INTO `t_school_schooltype` VALUES ('${id}', '${id}', '1');

3.線程組中設置循環次數

當然也可以連接csv進行讀取數據,在引到執行sql語句這里。



三、刪除數據

原理差不多都一樣,要刪除剛才新建的數據


使用場景:插入一個學校,然后對該學生進行一系列操作,最后清理數據


免責聲明!

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



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