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
相关推荐
Zzzzmo_7 小时前
【MySQL】JDBC(含settings.xml文件配置/配置国内镜像以及pom.xml文件修改)
数据库·mysql
FirstFrost --sy8 小时前
MySQL内置函数
数据库·mysql
eggwyw9 小时前
MySQL-练习-数据汇总-CASE WHEN
数据库·mysql
mygljx11 小时前
MySQL 数据库连接池爆满问题排查与解决
android·数据库·mysql
Bdygsl13 小时前
MySQL(1)—— 基本概念和操作
数据库·mysql
身如柳絮随风扬13 小时前
什么是左匹配规则?
数据库·sql·mysql
jiankeljx13 小时前
mysql之如何获知版本
数据库·mysql
小李来了!14 小时前
数据库DDL、DML、DQL、DCL详解
数据库·mysql
我科绝伦(Huanhuan Zhou)14 小时前
【生产案例】MySQL InnoDB 数据损坏崩溃修复
数据库·mysql·adb
海棠蚀omo15 小时前
从零敲开 MySQL 的大门:库与表的基础操作实战(保姆级入门指南)
数据库·mysql