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

JMeter: How to benchmark data deletion from database table in batches?

我正在尝试使用 JMeter 比较 DELETE 批处理大小之间的性能差异。

我有一个 table,其中填充了大量测试数据。接下来,我有一个 JDBC 请求 运行 如下语句:

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

我想保持运行ning这个直到table为空,并记录清除table所用的时间。

我会运行这个线程多次来得到一个平均执行时间,然后针对不同的批量大小重复这个过程。

  1. 我应该如何定义我的 While 控制器来实现这个?

  2. 我从其他站点了解到可以使用事务控制器来为我的流程计时,但我不熟悉此功能。我应该如何定义我的事务控制器来实现这个?

我会这样做:

  1. 使用"JDBC Request - Get Count"采样器从必须删除的数据库中获取数据
  2. 使用 BeanShell 断言检查是否有更多数据可以删除。否则停止线程
  3. 执行删除数据的请求
  4. 线程组应在出现错误时停止测试
  1. 添加Transaction Controller to be a top level test element under the Thread Group
  2. While Controller 添加为事务控制器的子项并使用以下条件表达式:

    ${__jexl3(${count_1} > 0,)}
    
  3. 将您的 JDBC 请求采样器作为 While 控制器的子项
  4. 添加 JDBC PostProcessor 作为 JDBC 请求采样器的子项并配置如下:

  5. 就是这样,While Controller会迭代直到tbl table中有entry,Transaction Controller会记录所有JDBC Request的累计时间采样器执行。