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所用的时间。
我会运行这个线程多次来得到一个平均执行时间,然后针对不同的批量大小重复这个过程。
我应该如何定义我的 While 控制器来实现这个?
我从其他站点了解到可以使用事务控制器来为我的流程计时,但我不熟悉此功能。我应该如何定义我的事务控制器来实现这个?
我会这样做:
- 使用"JDBC Request - Get Count"采样器从必须删除的数据库中获取数据
- 使用 BeanShell 断言检查是否有更多数据可以删除。否则停止线程
- 执行删除数据的请求
- 线程组应在出现错误时停止测试
- 添加Transaction Controller to be a top level test element under the Thread Group
将 While Controller 添加为事务控制器的子项并使用以下条件表达式:
${__jexl3(${count_1} > 0,)}
- 将您的 JDBC 请求采样器作为 While 控制器的子项
添加 JDBC PostProcessor 作为 JDBC 请求采样器的子项并配置如下:
就是这样,While Controller会迭代直到tbl
table中有entry,Transaction Controller会记录所有JDBC Request的累计时间采样器执行。
我正在尝试使用 JMeter 比较 DELETE 批处理大小之间的性能差异。
我有一个 table,其中填充了大量测试数据。接下来,我有一个 JDBC 请求 运行 如下语句:
delete from tbl where (entry_dt < '2019-02-01') and (rownum <= 10000);
我想保持运行ning这个直到table为空,并记录清除table所用的时间。
我会运行这个线程多次来得到一个平均执行时间,然后针对不同的批量大小重复这个过程。
我应该如何定义我的 While 控制器来实现这个?
我从其他站点了解到可以使用事务控制器来为我的流程计时,但我不熟悉此功能。我应该如何定义我的事务控制器来实现这个?
我会这样做:
- 使用"JDBC Request - Get Count"采样器从必须删除的数据库中获取数据
- 使用 BeanShell 断言检查是否有更多数据可以删除。否则停止线程
- 执行删除数据的请求
- 线程组应在出现错误时停止测试
- 添加Transaction Controller to be a top level test element under the Thread Group
将 While Controller 添加为事务控制器的子项并使用以下条件表达式:
${__jexl3(${count_1} > 0,)}
- 将您的 JDBC 请求采样器作为 While 控制器的子项
添加 JDBC PostProcessor 作为 JDBC 请求采样器的子项并配置如下:
就是这样,While Controller会迭代直到
tbl
table中有entry,Transaction Controller会记录所有JDBC Request的累计时间采样器执行。