JMeter:如何批量从数据库表中删除数据?

问题描述 投票:0回答:2

我试图使用JMeter比较DELETE批量大小之间的性能差异。

我有一个表,我填充了大量的测试数据。接下来,我有一个运行以下语句的JDBC请求:

delete from tbl where (entry_dt < '2019-02-01') and (rownum <= 10000);

我想继续运行它直到表为空,并记录清除表所需的时间。

我将多次运行此线程以获得平均执行时间,并针对不同的批量大小重复此过程。

  1. 我应该如何定义我的While Controller来实现这一目标?
  2. 我从其他网站上读到我可以使用事务控制器来计算我的进程,但我不熟悉这个功能。我该如何定义我的事务控制器来实现这一目标?
jmeter sql-delete database-performance
2个回答
0
投票
  1. 添加Transaction Controller成为Thread Group下的顶级测试元素
  2. While Controller添加为事务控制器的子级并使用以下条件表达式: ${__jexl3(${count_1} > 0,)}
  3. 将JDBC Request采样器作为While Controller的子代
  4. JDBC PostProcessor添加为JDBC Request采样器的子级,并将其配置为: enter image description here
  5. 就是这样,虽然Controller将迭代,直到tbl表中有条目,并且事务控制器将记录所有执行的JDBC请求采样器的累积时间。

0
投票

我会这样做:

  1. 使用“JDBC Request - Get Count”采样器从db中获取必须删除的数据Get Count
  2. 使用BeanShell断言检查是否有更多数据可以删除。否则停止线程BeanShell Assertion
  3. 执行删除数据Delete the data的请求
  4. 线程组应该在错误Stop test on error上停止测试
© www.soinside.com 2019 - 2024. All rights reserved.