jmeter JDBC Request


jmeter JDBC Request

             

            

*************

JDBC 请求

          

jdbc连接配置:引入模板JDBCLoad Test,设置配置参数

        

        

             

连接配置参数说明:

# Variable Name Bound to Pool
Variable Name for created pool:连接池名称,供jdbc request引用,如果有多个需确保该值唯一

# Connection Pool Configuration:连接池配置
max number of connections:最大连接数
max wait(ms):最长等待时间,单位为毫秒
time between eviction runs(ms):每个指定时间回收一次空闲连接,单位为毫秒
auto commit:自动提交,默认true
transaction isolation:事务隔离级别,默认deafult
preinit pool:是否预先初始化线程池,默认false
init sql statements seperated by new line:首次建立连接时执行的sql语句,可为多行,每行一条

# Connection Validation By Pool:连接验证
test while idle:测试空闲连接是否回收
soft min evictable idle time(ms):连接最小空闲时间,超过该时间连接回收,单位为毫秒
validation query:验证数据库是否正常工作

# Database Connection Configuration:数据库连接配置
database url:数据库连接url
jdbc driver class:数据库连接驱动,需导入对应的jar包到%JMETER_HOME%/lib目录中
username:用户名
password:密码
connection properties:连接属性

                   

                          

JDBC 请求取样器

        

          

              

相关参数说明:

# Variable Name Bound to Pool:绑定线程池
Variable Name of Pool declared in JDBC Connection Configuration:在JDBC连接配置中定义的线程池名称

# sql query
query type:查询类型,可选值如下
select statement:查询语句
update statemnt:更新语句(update、insert、delete)
callable statement:调用存储过程,存储过程预先在数据库中定义,支持占位符(?)、${...}
prepared select statement:预编译查询语句,可使用占位符(?)
prepared update statement:预编译更新语句,可使用占位符(?)
commit:提交sql语句
rollback:回滚sql语句
autoCommit(false):取消自动提交,如果连接配置中设置autoCommit为true,该配置会覆盖改为false

sql:需要执行的sql语句

parameter values:参数值,预编译语句占位符使用
parameter types:参数类型,与parameter values对应,说明对应字段存储类型
variable names:数据集,每个name对应一个列,为数组,
                如a,b ==> 第一列的第一个元素a_1、第一列第二个元素a_2 ...
                          第二列的第一个元素b_1、第二列第二个元素b_2 ...
result variable name:存储所有查询结果(json字符串)
query timeout(s):查询超时时间,单位为秒
limit resultset:限制返回的结果集的行数
handle resultset:任何处理结果集,可选值:store as string、store as object、count resords

                

                  

*************

示例

          

连接配置

        

               

数据库:lihu

数据库表:person

mysql> select * from person;
+----+---------------+-----+
| id | name          | age |
+----+---------------+-----+
|  1 | 瓜田李下      |  20 |
|  2 | 海贼王        |  21 |
|  3 | 瓜田李下2     |  20 |
|  4 | 海贼王2       |  21 |
|  5 | 瓜田李下      |  20 |
|  6 | 火影忍者      |  22 |
|  8 | 瓜田李下4     |  24 |
+----+---------------+-----+
7 rows in set (0.00 sec)

            

***********

select、update语句

           

JDBC Request:查询所有数据

        

              

JDBC Request 2:插入数据

        

             

 JDBC Request 3:查询所有数据

        

              

 JDBC Request 4:删除插入的数据

        

               

 JDBC Request 5:查询所有数据

        

              

查看结果树:数据查询、插入、删除执行成功

        

          

          

          

          

              

***********

预编译语句

           

JDBC Request:预编译查询语句

        

          

JDBC Request 2:预编译更新语句

        

               

查看结果树

        

          

          

预编译更新语句执行前后查询数据库

mysql> select * from person;
+----+---------------+-----+
| id | name          | age |
+----+---------------+-----+
|  1 | 瓜田李下      |  20 |
|  2 | 海贼王        |  21 |
|  3 | 瓜田李下2     |  20 |
|  4 | 海贼王2       |  21 |
|  5 | 瓜田李下      |  20 |
|  6 | 火影忍者      |  22 |
|  8 | 瓜田李下4     |  24 |
| 12 | 瓜田李下2     |  20 |
+----+---------------+-----+
8 rows in set (0.00 sec)

mysql> select * from person;
+----+---------------+-----+
| id | name          | age |
+----+---------------+-----+
|  1 | 瓜田李下      |  20 |
|  2 | 海贼王        |  21 |
|  3 | 瓜田李下2     |  20 |
|  4 | 海贼王2       |  21 |
|  5 | 瓜田李下      |  20 |
|  6 | 火影忍者      |  22 |
|  8 | 瓜田李下4     |  24 |
| 12 | 瓜田李下2     |  20 |
| 20 | 瓜田李下2     |  20 |
+----+---------------+-----+
9 rows in set (0.00 sec)

          

              

***********

查询结果处理

           

JDBC Request:获取所有结果列、结果集、限制返回数据(limit 4)

        

          

 JDBC Request 2:获取所有第一列、结果集、限制返回数据(limit 4、limit resultset)

        

               

调试取样器

        

          

查看结果树

        

          

              

 调试取样器响应数据:

JMeterVariables:
JMeterThread.last_sample_ok=true
JMeterThread.pack=org.apache.jmeter.threads.SamplePackage@2ec11d42
START.HMS=111218
START.MS=1642043538355
START.YMD=20220113
TESTSTART.MS=1642052049898
__jm__线程组__idx=0
__jmv_SAME_USER=true
a_#=4
a_1=1
a_2=2
a_3=3
a_4=4
b_#=4
b_1=瓜田李下
b_2=海贼王
b_3=瓜田李下2
b_4=海贼王2
c_#=4
c_1=20
c_2=21
c_3=20
c_4=21
jdbcConfig=org.apache.jmeter.protocol.jdbc.config.DataSourceElement$DataSourceComponentImpl@6e7c4cbc
m_#=1
m_1=1
result=[{name=瓜田李下, age=20, id=1}, {name=海贼王, age=21, id=2}, {name=瓜田李下2, age=20, id=3}, {name=海贼王2, age=21, id=4}]
result2=[{name=瓜田李下, age=20, id=1}]


# JDBC Request取样结果说明
映射了所有列,用数组存储,第一个元素为name_1;
用自定义的名称result存储结果集;

# JDBC Request 2取样结果说明
只映射了第一列,用数组存储,第一个元素为name_1;
用自定义的名称result2存储结果集;
limit resultSet对sql语句作了进一步限制

            

               

***********

调用存储过程

           

数据库预先定义存储过程

mysql> delimiter ;
mysql> delimiter //
mysql> create procedure insertData(in id integer, in name varchar(20), in age integer)
    -> begin
    -> insert into person values(id,name,age);
    -> end//
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;

                

JDBC Request:调用存储过程

        

              

 查看结果树

        

           

查询数据库:存储过程调用前后分别查询一次

mysql> select * from person;
+----+---------------+-----+
| id | name          | age |
+----+---------------+-----+
|  1 | 瓜田李下      |  20 |
|  2 | 海贼王        |  21 |
|  3 | 瓜田李下2     |  20 |
|  4 | 海贼王2       |  21 |
|  5 | 瓜田李下      |  20 |
|  6 | 火影忍者      |  22 |
|  8 | 瓜田李下4     |  24 |
| 12 | 瓜田李下2     |  20 |
| 20 | 瓜田李下2     |  20 |
+----+---------------+-----+
9 rows in set (0.00 sec)

mysql> select * from person;
+----+---------------+-----+
| id | name          | age |
+----+---------------+-----+
|  1 | 瓜田李下      |  20 |
|  2 | 海贼王        |  21 |
|  3 | 瓜田李下2     |  20 |
|  4 | 海贼王2       |  21 |
|  5 | 瓜田李下      |  20 |
|  6 | 火影忍者      |  22 |
|  8 | 瓜田李下4     |  24 |
| 12 | 瓜田李下2     |  20 |
| 20 | 瓜田李下2     |  20 |
| 30 | 瓜田李下      |  20 |
+----+---------------+-----+
10 rows in set (0.00 sec)

              

                  

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值