day1_jmeter操作mysql步骤

摘要:
MySQL数据库有四个事务隔离级别,即ReadUncommitted、ReadCommitted、RepeatableRead和Serializable。级别越低,支持的并发越多,系统开销也越低。Keep Alive:是否启用长连接机制。如果启用了keep-alive,则需要设置keep-alife的超时。MaxConnectionAge:keep-alive的超时。在连接超时之前,新请求将重用先前建立的连接,而不是重新创建新连接。如果超时超过,原始连接将被断开。新请求将重新创建一个新连接ValidationQuery:以测试JDBC连接是否被解除阻止。默认值为select1fromdefaultDatabaseURL:JDBC连接字符串。因为MySQL在这里进行了测试,所以它被写成jdbc:mysql://192.168.2.115:3306[port]/dbname?

在测试计划页面首先添加day1_jmeter操作mysql步骤第1张,点击浏览按钮找到jar包,打开即可,通过jar包连接mysql数据库
右键线程组添加->配置原件->JDBC Connection Configuration,在Variable Name文本框里输入一个变量名,其余的按图中填写,Database URL那要包含连接的服务器IP、端口和数据库,也可以在数据库stu后面输入useUnicode=true&characterEncoding=utf8&allowMultiQueries=true,或者allowMultiQueries=true也行,如下图:

day1_jmeter操作mysql步骤第2张

各参数分析:
Variable Name:JDBC创建连接池的名称,因为这里测试的是MySQL,所以设置为MySQL,这里一定注意要与JDBC Request中的Variable Name保持一致
Max Number of Connections:JDBC连接池的最大连接数,如果该值设置为0,则表示线程之间独立不使用共享线程池,如果要使用共享线程池,则确保该值大于或等于最大线程数
Pool Timeout:创建连接池时的超时时间,如果超过这个时间,则系统会抛出错误信息
Idle Cleanup Interval(ms):连接池的空闲时间,默认是1分钟
Auto Commit:是否自动提交,默认选择为True
Transaction Isolation:数据库事务隔离级别,默认为default。MySQL数据库事务隔离级别有4种,分别是Read Uncommited、Read Commited、Repeatable Read 、Serializable。级别越低,支持的并发往往会更大,并且系统开销也会越小
Keep-Alive:是否开启长连接机制,如果开启keep-alive,则需要设定keep-alive的超时时间
Max Connection Age(ms):keep-alive的超时时间,在连接超时之前,新的请求会重用之前建立的连接,而不会重新创建新的连接,如果超过这个超时时间,则会断开原有连接,新的请求会重新创建新的连接
Validation Query:测试JDBC连接是否畅通,默认是select 1 from default

Database URL:JDBC连接字符串,因为这里测试的是MySQL,所以写成jdbc:mysql://192.168.2.115:3306[port]/dbname(bugfree)?allowMultiQueries=true
JDBC Driver class:com.mysql.jdbc.Driver
Username:XXX
Password:XXXXXX

点击测试计划,点击浏览按钮,找到对应的jar包,将其添加到Library或jmeter的lib目录下,JDBC Request里填写的内容如下,保存后点击day1_jmeter操作mysql步骤第3张,在查看结果树里看运行是否成功

day1_jmeter操作mysql步骤第4张

右键线程组添加->Sampler->JDBC Request,在Variable Name文本框里输入一个变量名,保证Variable Name和JDBC Connection Configuration的一致,在JDBC Request的Query页面写sql语句,当Query Type选择Select Statement时,sql语句里不能有update操作,否则执行会报错,同理当Query Type选择Update Statement时,sql语句里不能有select操作,否则执行会报错,选择Query Type时可以有一条insert操作,再有一条update操作也可以
allowMultiQueries=true,是执行多条select操作的意思,当有多条select操作时,所有的sql语句都被执行,但是只显示第一条的结果,这是jmeter的问题,Query Type选择Callable Statement时可以看到所有的select执行结果,Callable Statement一般是调用存储过程时候用的

day1_jmeter操作mysql步骤第5张

当sql语句的值写?时,Query Type要选择Prepared Select Statement(预编译查询)Parameter values输入想查询的id值,Parameter types选择integer或bigint,Variable names输入id,name,在JDBC Request下面添加一个Debug PostProcessor,会把查询到的数据保存到这两个变量里,id_#和name_#是count(id)和count(name)的意思,id_1就是第一个id,name_1就是第一个name,id_2和name_2以此类推
Result variable name输入xxx,会把返回的结果保存到xxx里,xxx是一个list,里面有多个{id=1,name='cc'}

day1_jmeter操作mysql步骤第6张

day1_jmeter操作mysql步骤第7张

ForEach控制器:
输入变量前缀输入id,循环开始的下标输入0,结束的下标是${id_#},结束的下标也可以写死,比如3,就是循环3次,把0,1,2的下标打印出来,如果在线程组里设置多个线程,每个线程取值都是一样的,输出变量名称用index,在HTTP请求里的参数值就是${index}
勾上Add "_" before number?勾上它就在变量前加上下划线

计数器 

day1_jmeter操作mysql步骤第8张

启动从1开始,递增1个,最大值就是${id_#},Number format就是00,000的格式,不写就是1,2...格式,如果最大值写6,3个线程,循环2次,就是1,2,3,4,5,6顺序取值
勾上与每用户独立的跟踪计数器,每个线程有自己的计数器,5个线程,循环1次,都取1,如果3个线程,循环2次,就是1,2 1,2 1,2,勾上Reset counter on each Thread Group Iteration(在每个线程组迭代上重置计数器),如果3个线程,循环2次就是1,1,1,1,1,1
如果最大值写${id_#},线程只能写1,只能控制循环次数,才能逐个取值
如果线程数多,最大值就得写真实的数字,不能写${id_#},函数助手里有个__V,来设置HTTP请求里的value
仅一次控制器 把JDBC Request放到仅一次控制器的下面,线程组里有一个线程就执行一次,跟线程数对应
吞吐量控制器,跟吞吐量没有关系,选择Total Executions,吞吐量输入1,吞吐量控制器下面的请求只执行一次,即便有100个线程也执行一次,吞吐量输入几就执行几次,如果再勾选Per User就是每个用户执行一次,100个请求就执行100次,勾选Per User跟吞吐量就没有关系了

day1_jmeter操作mysql步骤第9张

选择Percent Executions,吞吐量输入20,就是20%*2(线程组里的请求次数=线程数*循环次数)=0.4,四舍五入为0,查看结果树里没有请求,如果大于0.5就是1次请求,如果再勾选Per User就是几个线程执行几次

day1_jmeter操作mysql步骤第10张

select id,name from test_user limit ${u_id},1就是每次取一条,就是依次把数据都取出来了

免责声明:文章转载自《day1_jmeter操作mysql步骤》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MVC (M-V-C启动程序调用关系)python 画广东省等压线图下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

.frm和.ibd恢复数据

昨日晚上开发告诉我不小心truncate两个表的数据,要求还原。结果在阿里云上找到了备份内容,结果是物理备份文件.frm、.ibd。心中一万个草泥马啊。。没办法,开始还原吧。 1、查看测试机Mysql配置文件位置 [root@localhost mysql]# which mysqld /usr/sbin/mysq...

mysql 数据库的表中复制一条数据并添加到该表中

数据库的表中复制一条数据并添加到该表中: 需求: 复制一行数据,并把c_name=化学,tid=015  1、准备sql查询语句:介绍一种快速生成的查询语句  2、编写sql语句:    INSERT INTO `course`(SELECT `cid` + 1, '015', '化学', `ctype`, `ccredit`, `cmax`, `c...

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables opt

mysql跳过权限: mysqld -nt --skip-grant-tables opt 登录:mysql -uroot -p 修改root密码 set password for 'root'@'localhost' = password('新密码'); 报错:ERROR 1290 (HY000): The MySQL server is running...

阿里云(linux Centos7)安装mysql

一、linux centos7 安装MySQL 1、下载mysql源安装包 wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 2、安装mysql源,若结尾出现complete!,则说明MySQL源安装完成 yum localinstall mysql57-com...

Mysql的union

我同事写了一条Sql语句,当时没看明白,下面晒出来: SELECT SUM(new_cart) as new_cart,SUM(new_collect) as new_collect, SUM(total_cart) as total_cart, SUM(total_collect) as total_collect, SUM(ipv) ipv, SUM(...

keep + haproxy 运行原理

haproxy+keepalived原理特点 所有的系统,都是先经历一个单台机器搞所有业务的时代,一个程序+一个mysql数据库,就可以满足开发及第一个版本上线的要求。随着,数据的增加以及业务的增长,这些应用就面临一个访问量的扩大以及扩展的问题。最简单的扩展就是水平扩展,原来由一个mysql增加为2个或多个,形成一个集群,这样最简单的能力就是提供更强的服务...