jmeter使用foreach处理从jdbc request中取出的多行值

  1. 有两种方法可以取出jdbc中查询出的数据库的值。
  2. 第一种,使用jdbc request自带的方法,如下图,在variable names填入变量名称,即将从数据库取出来的值赋值给该变量,然后后续通过该变量名就可以使用从数据库中拿出来的值了,这个变量默认取的是当前数据库查出来的该列的所有值,是一个数组。
    在这里插入图片描述
    在这里插入图片描述
  3. 拿出来这些值以后,可以使用foreach控制器遍历这些值,输入变量前缀必须和jdbc request下的设置的变量名保持一致,输出变量名称也必须填写,方便循环器下的请求处理这些值需要。
    通过使用发现使用foreach控制器时,循环次数的最大和最小都不需要填写,它会自动根据每个线程取出的值,自动去控制循环次数,这是jmeter非常赞的一点!
    在这里插入图片描述
  4. 最后在控制循环器中添加需要处理值的sampler,记得将控制器中输出的值以${uniqueId}格式传递,如下图,这样就可以将数据库中取出的值一一去处理了。
    在这里插入图片描述
  5. 第二种方法就是使用正则提取去提取从数据中拿出来的值,在jdbc下新增一个正则表达式提取器,更新sql语句如下,打印出的这样的数据格式方便使用正则表达式取出相应的值。
    select concat(‘request_unique_id=’,t.request_unique_id) from rpt_task_request t where status = ‘REQUEST_SUCCESS’ and request_time>date’2019-08-01’ and request_time < subdate(NOW(), INTERVAL 5 SECOND);
    在这里插入图片描述
  6. 正则表达如下,匹配数字填写-1表示取出当前字段所有行的值,引用名称需正确填写,接下来就是添加foreach控制器,foreach控制器下的输入变量前缀改为下面的引用名称,就可以了,其他操作步骤跟上面一样。
    在这里插入图片描述
  7. 调试时可以添加一个debug sampler,就可以在察看结果树看到打印信息了。
    在这里插入图片描述

通过使用发现,使用foreach进行多线程处理请求,效率也不慢,几乎没有影响压测数据。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值