Jmeter-如何对整个数据库的两个JDBC请求执行数据比较

Jmeter-如何对整个数据库的两个JDBC请求执行数据比较,jmeter,Jmeter,我想比较两个数据库之间的数据,其中有700K条记录需要比较,而且这个数字一直在增加。 我的架构是: 其中基于我运行的主查询: JDBC1和JDBC2,然后比较JDBC1和JDBC2之间的数据 如果我在主查询中设置静态限制 select * from transaction_info order by id asc limit 1000 一切正常,我知道如何比较数据。 但是,我如何使所有这些动态化,以便我可以分解主要查询,如: 1. Query first 1000 rows, then

我想比较两个数据库之间的数据,其中有700K条记录需要比较,而且这个数字一直在增加。 我的架构是:

其中基于我运行的主查询:

JDBC1和JDBC2,然后比较JDBC1和JDBC2之间的数据

如果我在主查询中设置静态限制

select * from transaction_info
order by id asc 
limit 1000
一切正常,我知道如何比较数据。 但是,我如何使所有这些动态化,以便我可以分解主要查询,如:

1. Query first 1000 rows, then compare/assert.
2. Query next 1000 rows then compare/assert.
所有这些都会持续到700K记录吗


感谢您的帮助

作为主查询SQL的一部分,您可以包括LIMIT和OFFSET的组合,以获得行的增量获取,并像下面那样对OFFSET部分进行变量化,以引入动态性

select * from my_table limit 1000 offset ${offset_value}
对于偏移量变量,定义一个计数器配置元素,其起始值为1000,增量为1000,直到最大值为700K。如果您希望每个用户都执行此过程,请选中“每个用户独立跟踪计数器”

这样,每次您将获取1000行,然后依次获取后续1000行


我对测试计划的建议

您可以删除循环控制器,将子查询和断言作为主查询的同级,并将线程组的循环计数定义为700。这样,主查询连同子查询和断言一起被触发700次,每次获取、处理和断言1000行

样本测试计划

线程组循环计数配置



希望这有帮助

谢谢你的评论,你帮了我很多。但是,我怎样才能把上面的所有内容都放在循环下,并使脚本完全动态?那么,当你说你想把上面的所有内容都放在循环下时,你实际上是在暗示什么?我的理解是,您希望以每次迭代1000行的增量方式获取主查询中的700K行,并比较/断言主查询获取的1000行的子查询。在这种情况下,我不确定循环控制器扮演什么角色(子查询的父项)。请帮助澄清这一点。为了回答您的查询,将700配置为线程组中的循环计数基本上可以帮助主查询获取1000行,直到获取700K行,并执行其他进程。好吧,也许我从一开始就问错了。如果我获取主查询中的所有700K行,则需要太长时间才能完成。这就是为什么我想要:主查询被分成:更多的主查询,每个查询都有ex:1000行;比如main1:1000行。缅因2:又是1000行。谢谢。。凉的现在有了更好的理解,因此我更新了答案。如果您遇到一些问题,请告诉我。感谢最新的更新,但这种方式似乎不适用于我,因为实际运行是基于另一个查询定义的。所以700K不是静态数字。但是,我将使用和中的所有最新需求创建另一个线程,并在接受时关闭此线程。谢谢