Jmeter 链接MySQL测试

1.环境部署

1.1官网下载MySQL Connector

https://dev.mysql.com/downloads/connector/j/

1.2 解压后,将jar放到jmeter/lib目录下

1.3 在测试计划中添加引用

2.脚本设置

2.1设置JDBC Connection Configuration

先添加一个setUp线程中,在setUp中添加"配置元件"-JDBC Connection Configuration

注:当然你也可以根据测试需求在执行线程组中添加JDBC Connection Configuration,放在setUp中主要是为了避免每次迭代都重新创建链接

在Variable Iame for created pool中写入创建链接的引用名,后续使用此名称

在Database Connection Configuration 中写入链接数据库信息

Database URL:数据库连接 URL

JDBC Driver class :数据库驱动

Username :数据库登录用户名

Password :数据库登录密码

Connection Properties 建立连接时要设置的连接属性

数据库 驱动 URL
MySQL com.mysql.jdbc.Driver jdbc:mysql://host:port/{dbname}
PostgreSQL org.postgresql.Driver jdbc:postgresql:{dbname}
Oracle oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:user/pass@//host:port/service
sqlServer com.microsoft.sqlserver.jdbc.SQLServerDriver jdbc:sqlserver://host:port;databaseName=databaseName

还可以根据自己需求自定义其他参数

2.2 设置 JDBC Request

2.2.1 参数说明

  • Variable Name:填写前面创建的数据库连接池的名字
  • Query type:填写的sql语句
  • Parameter valus:参数值
  • Parameter types:参数类型,可参考:Javadoc for java.sql.Types
  • Variable names:保存sql语句返回结果的变量名
  • Result variable name:创建一个对象变量,保存所有返回的结果
  • Query timeout:查询超时时间
  • Handle result set:定义如何处理由callable statements语句返回的结果

2.2.2 Query type 参数设置

  • Select statement:查询语句,只能进行一条sql语句的查询
  • callable statement:如果需要进行多条sql语句的查询
  • Update Statement:这是一条更新语句包含insert和update,也是只能进行一条sql语句的查询
  • Prepared Select Statement:用于多次执行的select语句
  • prepared select:用于绑定变量重用执行计划,对于多次执行的SQL语句,prepared select 的第一次执行消耗很高,它的性能主要体现在重复执行上
  • Prepared Update Statement:和我们的prepared select用法极为类似
  • Commit:将未存储的SQL语句写入数据库,使用不多

2.2.3 Parameter valus的使用

在sql query中使用"?"作为占位符,并传递参数值和参数类型

3.获取返回值

3.1 通过参数名获取

当Variable names中设置了参数名,可以使用参数名获取参数值

  • keyA_# 获取A列总行数
  • keyA_1 获取A列第一个值
  • keyA_2 获取A列第二个值
  • keyB_2 获取B列第二个值
  • ...

执行时直接引用参数名

Groovy 复制代码
def key_all = vars.get('row_key_#')
log.info('总行数 '+key_all)
def key_1 = vars.get('row_key_1')

3.2 for each 遍历

请求中引用输出变量名${F_row_key}

输出:

4.记录一个坑

设置唯一数时,使用jmeter计数器,设置自增规则后,在JSR223中引用

4.1原始JSR脚本(报错)

直接引用以{}形式引用'{P_select}'

Groovy 复制代码
def P_select = '${P_select}'
log.info('当前key '+ P_select)

导致'${P_select}'计数器在执行取值阶段数据异常,并没有按照预想递增方式取值;

5并发演示:

以线程1-3为例,所以迭代取值都为key = 16

4.2 修改后JSR

使用vars方式取值:

Groovy 复制代码
def P_select = vars.get('P_select')
log.info('当前key '+P_select)

能够按照设定依次递增取值

5.补充

跨线程组传参

复制代码
线程组1
props.put('P_row_pk',row_pk)
复制代码
线程组2接收
String props_pk = props.get('P_row_pk')

数据库修改链接数

复制代码
查询容器
docker ps
进入容器,或进入MySQL安装目录
sodo docker exec -it mysql bash
连接MySQL
mysql -u root -ppassword -h localhost
查询当前连接数
SHOW VARIABLES LIKE 'MAX%';
修改连接数
set global max_connections = 151
相关推荐
钢铁男儿42 分钟前
Python 正则表达式(正则表达式和Python 语言)
python·mysql·正则表达式
超级迅猛龙2 小时前
保姆级Debezium抽取SQL Server同步kafka
数据库·hadoop·mysql·sqlserver·kafka·linq·cdc
helloyaren4 小时前
Docker Desktop里搭建Mysql 9.4主从复制的保姆级教程
mysql·技术·主从复制
weixin_456588154 小时前
【java面试day16】mysql-覆盖索引
java·mysql·面试
舒一笑6 小时前
MySQL中模糊匹配like的一个坑
后端·mysql
ejinxian7 小时前
MySQL/Kafka数据集成同步,增量同步及全量同步
数据库·mysql·kafka
@_码农9 小时前
【MySQL的卸载】
mysql
Momentary_SixthSense9 小时前
RESP协议
java·开发语言·javascript·redis·后端·python·mysql
MacroZheng9 小时前
横空出世!一款开源的数据同步工具,稳定又高效,好用到爆!
java·后端·mysql
会飞的灰大狼14 小时前
MyCAT完整实验报告
mysql·centos7