一、

使用java代码和jmeter脚本批量生成压测数据

 

书接上回

 

如何使用mysql存储过程批量造压测数据?

 

业务场景回顾

在执行压测脚本之前,我们通常要准备数据库存量数据,一般是以生产数据为依据成比例增加,少则需要上百万,多则需要上千万、上亿,经常有很多时间要花在造数据上。

如何快速准备数据呢?

 

上一篇文章中讲了用mysql存储过程的方式,今天继续讲解另外两种方式。

 

二、

使用java代码方式

 

方式一、使用java代码方式

主要分为三步:

第一步:获取数据库连接,代码如下:

使用java代码和jmeter脚本批量造数

只需要对照修改成自己的IP、端口、数据库名、用户名、密码,其它代码都不用变。

 

第二步:操作数据库并关闭连接,代码如下:

使用java代码和jmeter脚本批量造数

其中是一个简单的insert语句,通过拼接前缀和后缀构成完成的sql插入语句,有以下几点要注意:

1、conn.setAutoCommit(false);这里是关闭事务自动提交,不然每进行一次insert操作mysql就会创建一个事务,对效率影响很大。

2、使用的是insert into tb (...)  values(...) , (...)...; 这种一次insert插入多条语句的方式,而不是普通的insert into tb (...) values (...);  insert into tb (...) values (...); ...这种单条insert语句,可以大大提高效率。

 

第三步:在main方法中分别调用这两个方法即可

 

二、

方式二、使用jmeter脚本方式

 

Jmeter操作数据库主要分为两个步骤:

第一步:配置JDBC Connection Configuration

使用java代码和jmeter脚本批量造数

使用java代码和jmeter脚本批量造数

其中注意几点:

1、Variable Name:这个变量名称要与接下来添加的jdbc请求中的一致

2、Database URL:这个跟前面java代码中的url类似,后面是数据库IP、端口、名称

 

第二步:添加JDBC Request,写sql语句

 

 

使用java代码和jmeter脚本批量造数

其中注意几点:

1、Variable Name:这个变量名称必须与上面JDBC Connection Configuration中配置的一样

2、此处对于insert语句选择的query type是prepared update statement,比update statement效率高一点

3、sql语句中用到的变量id是通过计数器的方式获取的,实现每次递增;

sysdate()函数获取系统当前时间;

后面是生成一个随机字符串。

4、计数器在线程组右键--配置元件--计数器,设置如下:

使用java代码和jmeter脚本批量造数

此处实现从1开始,每次递增1,一直到10000000,变量名是id。

 

脚本写好了,运行没问题,设置好响应断言,就可以让它一直循环了。

 

end

--------

本文首发于本人原创公众号【媛测】(原名-玩转jmeter),专注分享性能、自动化测试等相关知识,寻找志同道合之士共同成长!扫码关注后分别回复jmeter、python、linux,领取个人总结资料。

使用java代码和jmeter脚本批量造数

相关文章: