参考大大的博客学习:怎么用JMeter操作MySQL数据库?看完秒懂!_jmeter mysql_程序员馨馨的博客-CSDN博客
注:里面所有没打码的都是假数据,麻烦大家自行修改正确的信息。
一、背景
需要取数据库中的值,作为参数进行增删改查操作,所以要Jmeter跟Mysql连接起来。
二、加载JDBC驱动
下载mysql-connector-java-5.1.47
存放到jmeter目录-> lib ->ext下
三、重启jmeter
四、线程组中添加JDBC Connection Configuration
步骤:1、选中线程组,鼠标右键,添加--配置元件--JDBC Connection Configuration
1、名称:默认为空,可自定义名称,也可为空
2、注释:默认为空,可自定义,也可为空
3、Variable Name for created pool:一个连接名称,例如命名为s_mysql1,需要唯一标识,后面的JDBC请求中需要用到,所以需要与JDBC取样器中的名称一致,简单理解就是jdbc request的时候需要确定去请求哪个数据库。
4、Max Number of Connections: 连接池中允许的最大数据库连接数,默认10,做性能测试时,建议填 0
5、Max Wait(ms) : 在连接池中取回连接最大等待时间,单位毫秒,默认10000,默认即可
6、Time Between Eviction Runs(ms):线程可空闲时间,单位毫秒,默认60000,默认即可
7、Auto Commit:自动提交sql语句,有三个选项:True、False、编辑(JMeter提供的函数设置),默认为true ,默认即可
8、Transaction Isolation:事务隔离级别,默认为DEFAULT,默认即可
9、Test While Idle: 当连接空闲时是否断开,默认为True,默认即可
10、Soft Min Evictable Idle Time(ms): 连接池中连接的最小空闲时间,以毫秒为单位。当连接池中的连接处于空闲状态且超过了 "Soft Min Evictable Idle Time" 的设定值时,连接池可能会选择回收这些空闲连接,默认为5000,默认即可
11、Validation Query: 验证sql语法,默认为select1,默认即可
12、Database URL:数据库连接 URL,可以带上字符集characterEncoding=utf-8,也可允许多条sql执行allowMultiQueries=true,还可指定时区serverTimezone=UTC,比如jdbc:mysql://10.0.41.104 :33066/u_backend?serverTimezone=UTC&characterEncoding=utf-8&allowMultiQueries=true
数据库URL+端口号+数据库名testdb
如:jdbc:mysql://10.0.41.104 :33066/testdb
13、JDBC Driver class:JDBC的类,默认为空,必填项,mysql就选择com.mysql.jdbc.Driver
14、Username:数据库的用户名
15、Password:数据库的密码
五、添加JDBC Request
1、步骤:线程组-》添加-》取样器0-》JDBC Request
名称:自定义
Variable Name of Pool declared in JDBC Connection Configuration:要与JDBC Connection Configuration中的Variable Name for created pool值保持一致
Query Type:根据填写的sql选择,查询就选择Select Statement,更新就选择Update Statement
Variable names:对应sql查询结果的字段值, 字段值有多少个,则对应值就有多少个,例如sql查出来有一个字段值reg_count,那么下面就对应1个变量count
Handle ResultSet:默认为Store as String,选择默认值即可, 当选择此选项时,查询结果将以字符串的形式存储在变量中
六、查询到的sql值引用
引用:${参数_1} ,如:${testcount_1}
七、如果sql查询返回多个参数
如果SQL查询出来的值有多个,例如查询出来了5行记录,每行三个字段,pid_reg_count对应变量count,pid_fee对应变量fee,income对应变量income。
可以添加一个Debug Sample,查看每个值是怎么取的,${count_#}表示返回的行数,${count_1}表示返回的count字段的第一行的值,${count_2}表示返回的count字段的第二行的值,${fee_1}表示返回的fee字段的第一行的值,${income_1}表示返回的income字段的第一行的值。。。依次类推。