前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【JMeter系列-5】JMeter操作Mysql数据库

【JMeter系列-5】JMeter操作Mysql数据库

作者头像
云深i不知处
发布2020-09-16 10:07:32
1K0
发布2020-09-16 10:07:32
举报
文章被收录于专栏:测试基础

JMeter连接mysql数据库是很方便的,下面就演示一下具体的操作。 首先,在本地安装好mysql服务器,建立库和表,并准备数据以供测试使用。

在这里插入图片描述
在这里插入图片描述

接下来,在【测试计划】中添加JDBC驱动,即下载mysql-connector-bin.jar并添加到classpath中。如下图所示:

在这里插入图片描述
在这里插入图片描述

当然,如果将这个jar包直接放在JMeter安装目录的lib文件夹中,就无需在【测试计划】中添加了。 当上面的准备工作完成后,就可以在线程组下添加一个【配置元件】–【JDBC Connection Configuration】

在这里插入图片描述
在这里插入图片描述

参数详解:

名称

描 述

必须

Name

脚本中显示的这个元件的描述性名称

Variable Name for created pool

连接所绑定的变量名。可以创建多个连接,每个连接绑定到不同的变量名,后续【JDBC Request】通过对应variable name使用相应的连接

Max Number of Connections

连接池最大允许连接数。默认设置为0,代表每个线程获得自己的连接池。如果使用共享连接池,将其设置成与线程数相同即可

Max Wait (ms)

超时时间。如果尝试连接的过程超过了这个时间,则抛出异常并停止连接

Time Between Eviction Runs (ms)

运行状态下,空闲对象回收线程休眠时间。如果设为负数,空闲对象回收线程将不会运行

Auto Commit

自动提交开关,true代表开启

Transaction isolation

事务隔离,一般使用默认即可

Test While Idle

当连接空闲时是否进行测试

Soft Min Evictable Idle Time(ms)

连接可以在池中处于空闲状态的最短时间,超过这个时间的空闲连接才会被回收

Validation Query

用于确定数据库是否仍在响应的简单查询

Database URL

数据库的JDBC连接串

Username

数据库连接的用户名

Password

数据库连接的密码

添加【JDBC Request】

在这里插入图片描述
在这里插入图片描述

最终脚本结构完成,运行脚本,结果如下:

在这里插入图片描述
在这里插入图片描述

再看Debug Sampler中:

在这里插入图片描述
在这里插入图片描述

可以看到,sql查询结果存储在变量中,例如name的变量,name_#=3,表示sql语句name字段有3个结果,name_1、name_2、name_3,在脚本后续想使用这些值时用${variable name}引用,例如用${name_1}即可使用"Tom"这个值。 以上便是JMeter操作mysql数据库的常规用法,已经能满足大部分使用情况,毕竟测试中一般只会进行查库操作,很少写库。但有时候我们难免遇到一次性执行多种类型sql语句(类似事务)的场景,按照上文中的写法,是实现不了的。 要实现这个功能,有两种方案,首先看方案一。

  1. 【JDBC Connection Configuration】配置页面,Database URL:jdbc:mysql://localhost:3306/hkkTest后添加?allowMultiQueries=true
在这里插入图片描述
在这里插入图片描述
  1. 【JDBC Request】的【Query Type】选择Callable Statement,然后将多条sql语句按顺序写好,每条语句要以分号结尾。
在这里插入图片描述
在这里插入图片描述

运行后,查看结果:

在这里插入图片描述
在这里插入图片描述

再说方案二。 方案二使用的前提是,mysql服务器上已经建好相应的存储过程并执行,如下例:

代码语言:javascript
复制
delimiter $$;
# 存储过程后面必须有()
CREATE PROCEDURE user_procedure()
BEGIN
  UPDATE test.user SET age=24 WHERE name='Tom';
  INSERT INTO test.user(id,name,age,address) VALUES(4,'Lucy',17,'Paris');
  INSERT INTO test.user(id,name,age,address) VALUES(5,'Messi',32,'Barcelona');
  DELETE FROM test.user WHERE name='Jack';
  SELECT * FROM test.user;
END
$$;
delimiter;

然后,【JDBC】中【Query Type】同样选择Callable Statement,sql语句只写上调用存储过程的语句即可。

在这里插入图片描述
在这里插入图片描述

运行脚本,查看结果,可以看到存储过程已经被执行,数据库数据被修改成功:

在这里插入图片描述
在这里插入图片描述

至此,JMeter操作mysql数据库的部分完结。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/06/22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档