JMeter核心配置元件之JDBC连接配置
一、docker安装mysql
-
拉取镜像
docker pull mysql:latest
-
创建本地文件夹
sudo mkdir -p ~/docker/mysql/{conf,logs,data}
-
进入目录
cd /docker/mysql
-
启动容器
docker run --name mysqlserver \ -v $PWD/conf:/etc/mysql/conf.d \ -v $PWD/logs:/logs \ -v $PWD/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123123 \ -d -i -p 3306:3306 mysql:latest
-
查看进程
docker ps -a
-
进入容器
为配置数据库做准备
docker exec -it mysqlserver bash
-
登陆mysql
输入密码123123
mysql -uroot -p
-
开启远程访问权限
use mysql; select host,user from user; ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123123'; flush privileges;
二、创建数据表
-
查询本机IP地址
ifconfig
-
连接数据库
-
创建数据库及表
-- 创建数据库 CREATE DATABASE IF NOT EXISTS `jmeter_class`; ---跳转到jmeter_class数据库 USE `jmeter_class`; ---删除user表 DROP TABLE IF EXISTS `user`; ---创建user表 CREATE TABLE `user` ( `uid` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(100) DEFAULT NULL, `password` varchar(100) DEFAULT NULL, PRIMARY KEY (`uid`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
三、mysql connector依赖包下载
由于connector依赖包的版本与mysql 的版本有对应关系,如果版本不兼容将报错,所以需要先查看安装的mysql 版本,具体如下所示:
-
docker mysql版本查询
查询出的结果mysql是8.027版本
#进入容器内部 docker exec -it mysqlserver bash #输入密码 mysql -uroot -p #查看数据库版本 select version();
-
mysql connector依赖包下载
需在页面中Select Operating System选项中找到Platform Independent点击,会跳转到下载页面,选择mysql-connector-java-8.0.27.zip下载即可
四、管理connector依赖包
把mysql connector依赖包,放置在jmeter安装目录下lib中,然后重启jmeter,如图所示:
或者在Jmeter的Test Plan中直接引入jar包,如下图所示:
五、jmeter连接MySQL数据库
- 选择测试计划-右键添加配置元件-JDBC Connection Configuration
-
填入数据库连接信息
-
Variable Name for created pool:变量名,类似服务别名,可自行定义
-
DataBase URL:基本格式【jdbc:mysql://数据库地址:端口】,【jdbc:mysql://】是jdbc连接mysql数据库固定前缀,常用格式,加入后缀防止乱码
jdbc:mysql://{ip}:{port}/{dbname}?useUnicode=true&characterEncoding=utf8 #举例 jdbc:mysql://192.168.28.241:3306/jmeter_class?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true
-
JDBC Driver Class:选择对应的驱动类
-
Username:用户名
-
Password:密码
-
六、配置JDBC Request
- 取样器参数详解
现在线程组中加入JDBC Request取样器,如图所示:
Variable Name of Pool declared in JDBC Connection Config :数据库连接池的名称,需要与JDBC Connection Configuration的Variable Name名称保持一致
Query:填写要被执行的SQL语句
Parameter valus:参数值
Parameter types:参数类型
Variable names:保存sql语句返回结果的变量名
Result variable name:创建一个对象变量,保存所有返回的结果
Query timeout:查询超时时间
Handle result set:定义如何处理由callable statements语句返回的结果
我们添加一个监听器,保存脚本运行一次,查看执行结果。
-
插入数据取样器,需要注意的是插入语句时,Query Type要选择Preparete Update Statement。
-
查询数据取样器,需要注意的是插入语句时,Query Type要选择Select Statement。
七、JDBC Request参数化
方法(一):在被执行的SQL语句中使用“?”作为占位符,并传递参数值和参数类型。
-
在Test Plan界面User Defined Variables中定义需要的变量、
-
JDBC Request取样器界面SQL Query输入框中以${变量名}的形式引用变量。被执行的SQL语句中使用“?”作为占位符,并传递参数值和参数类型。
方法(二):自定义用户变量,然后进行引用
八、参考
1、jmeter压测练习:https://github.com/princeqjzh/iJmeter
2、dbeaver下载:https://dbeaver.io/download/
3、mysql connector依赖包下载:https://downloads.mysql.com/archives/c-j/