100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > jmeter mysql查询结果提取_jmeter(11)-jdbc请求及请求后的响应结果如何提取

jmeter mysql查询结果提取_jmeter(11)-jdbc请求及请求后的响应结果如何提取

时间:2020-11-22 23:58:11

相关推荐

jmeter mysql查询结果提取_jmeter(11)-jdbc请求及请求后的响应结果如何提取

参考博文:

/wuzm/p/10862904.html

/qmfsun/p/5912532.html

一.环境准备-数据库压力测试

a、jmeter5.1.1版本最新版本,可以去网页下载:/download_jmeter.cgi

b、jdbc驱动:

jmeter要链接mysql数据库,首先得下载mysql jdbc驱动包(注:驱动包的版本一定要与你数据库的版本匹配,驱动版本低于mysql版本有可能会导致连接失败报错)

我这里下载的是 mysql-connector-java-8.0.19.jar

准备好驱动包后,按照如图进行设置:

点击测试计划-->点击浏览-->选中mysql驱动jar包-->打开

c、在测试计划下,把JDBC驱动包添加上,也可以将驱动包放入jmeter的lib目录下,即可自动加载。

二.操作步骤

新建一个线程组→添加配置元件---JDBC Connection Configuration(连接数据库组件)→

添加取样器→JDBC Request(JDBC请求)

JMeter如果进行JDBC请求,

请求后的响应结果如何给下一个请求用(也就是传说中的关联)

1.添加 "JDBC Connection Configuration"里面用来配置一些数据库连接的信息

JDBC Connection设置创建数据库连接(供JDBC Request Sampler使用)

1)Variable Name Bound to Pool:数据库连接池的变量名。 需要唯一标识。与JDBC取样器中的相对应,决定JDBC取样的配置。

原理:JDBC request可以通过选择不同的连接池名来选择不同的数据库连接。

VariableName变量名称:与JDBC Request的Variable name保持一致,因为链接数据库是需 要在JDBC Connection Configuration中配置好的,

然后赋予一个变量名称,那么JDBCRequest想要去访问数据库,就必须通过这个配置好的元件去连接,

所以JDBCReques就需要通过读取JDBC Connection Configuration的变量中的信息。

Variable Name:连接池绑定的jmeter变量的名称,自定义填写,必须与JDBC连接配置的“变量名称”字段一致。

比如JDBC Connection Configuration里面的Variable Name是jdbc_config

那么在写JDBC请求时,需要填写的Variable Name就必须是jdbc_config!!!

Validation Query:验证查询,不同版本的填写格式可能不同(比如3.1是Select 1,2.6是Select1),格式错误会报错。最新的Jmeter5.1.1下拉框可选择。

2 ) Connection Pool Configuration 连接池配置参数如下

a. Max Number of Connections: 该数据库连接池的最大连接数,一般可设置为0,意思是每个线程都使用单独的数据库连接,线程之间数据库连接不共享,在大多数情况下,将其设置为0,这意味着每个线程将得到它自己的池,其中只有一个连接,即线程之间不共享连接。如果您真的想要使用共享池(为什么?),那么将max count与线程数相同,以确保线程不会相互等待。

b. Max Wait(ms)}: 在连接池中取回连接最大等待时间,在查询过程中, 超过设置的值,连接池会抛出错误

c. Time Between Eviction Runs (ms)疏散时间,数据库空闲清理的间隔时间

d. Auto Commit自动提交。有三个选项,true、 false、编辑(自己通过imeter提供的函数设置)

Transaction lsolation:

事务间隔级别设置,主要有如下几个选项:

[TRANSACTION NODE]事务节点

TRANSACTION READ UNCOMMITTED事务未提交读

TRANSACTION READ COMMITTED事务已提交读

TRANSACTION SERIALIZABLE事务序列化

DEFAULT默认

TRANSACTION REPEATABLE READ事务重复读

3) Connection Validation by Pool

这是Jmeter用来检验数据库连接是否有效的一种机制,超过5秒没有使用的话,就会用validation query去测试下这个连接是否有效

1、Test While ldle 当空闲的时候测试连接是否断开,测试连接池的空闲连接,验证查询将会被使用去测试。

2、Soft Min Evictable Idle Time(ms) :最少的时间连接可能在池中闲置,然后才有资格被闲置的对象驱逐出去,额外的条件是至少在池中保持连接。默认值为5000(5秒)

4)Database Connection Configuration

a. Database URL:数据库服务器地址。如jdbc:mysql://localhost:3306/test 表示本地数据库,3306端口,数据库名称为test

如果想执行多条语句可以使用(allowMutiQueries-true表示在JDBC中执行多条Selec语句)

可配置如下:

jdbc:mysql://ip:3306/数据库名?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true

jdbc:mysql://{ip}:{port}/{dbname}?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true

useUnicode=true 使用Unicode编码格式(字符集编码格式)

characterEncoding=utf8 使用UTF-8解码(字符集编码格式)

allowMultiQueries=true 允许多个query一起使用(1个请求中添加多个sql语句)

b. JDBCDriver Class:据库IDBC驱动类 名i com.mysaLjdbc.Driver.3、Username:数据库用户名root

c. password: 数据库密码(注意,是明文)

请求中执行多条sql的关键两步

1. 【JDBC Connection Configuration 】在配量DataBase URL的时候,加上allowMultiQueries-true参数如:jdbc:mysq://192 168 0.183:3306/mysql?allowMultiQueries=utrue

2. 【JDBC Request】 在jdbc请中, QueryType一定要选择Callable statement,使用Callablestatement时, 一次可以包含多个SQL,但非结尾的SQL要加“;”

2.添加一个“CSV Data Set Config”,用来在后续的JDBC请求中select语句中where条件参数化使用

user_ids这个字段我们将使用参数化,参数化的值也是从数据库中拷贝出来的

这样使用查询语句的话才会成功。

3.添加JDBC请求

Query Type:

上面这里如果不是很清晰的话,可以参考

/yiyaxuan/p/12367848.html 这里我分别举例子实际操作附有截图。

4.请求测试可以发现jdbc请求已经成果,并能在响应数据中看到返回的结果

5.那么接下来的问题就来了,如果我的下一个请求,需要JDBC中的请求,那我该怎么得到JDBC中的响应数据呢?

在JMETER中可以使用“正则表达式提取 器”来实现,那么怎么来实现呢,需要在jdbc请求后面添加一个后置的“正则表达式提取器”(表达式中的关键部分是 ([^"]+) ),添加的表达式如下

6.为了验证是否能正确取得jdbc中的响应结果数据,模拟添加了一个简单的http请求

7.http请求的“查看结果树”中可以看到成功的取得的user_id的信息

多说几句,如果SQL语句写成 select 'user_id='|| '"' || user_id ||'"' from sys_user b where b.USER_ID='13707'的形式,则可以通过下面的正则表达式来取到user_id=后面的内容,正则表达式为:user_id=" (.+?)"

配置完毕,接下来填写JDBC请求

Variable Name:与JDBC Connection Configuration中的Variable Name保持一致

Query Type:语句类型,查询用select,增删改用update,一起用可以选择callable

Query:填写对应的语句(这里用了一个简单的查询语句作为示例)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。