【问题标题】:JMeter: How to benchmark data deletion from database table in batches?JMeter:如何对批量从数据库表中删除数据进行基准测试?
【发布时间】:2019-02-18 04:34:44
【问题描述】:

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

我有一张表格,里面有大量的测试数据。接下来,我有一个运行以下语句的 JDBC 请求:

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

我想一直运行到空表为止,并记录清空表所用的时间。

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

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

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

【问题讨论】:

    标签: jmeter sql-delete database-performance


    【解决方案1】:
    1. 添加Transaction Controller 成为Thread Group 下的顶级测试元素
    2. While Controller 添加为事务控制器的子级并使用以下条件表达式:

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

    5. 就是这样,While Controller 会一直迭代直到tbl 表中有条目,并且Transaction Controller 会记录所有JDBC Request sampler 执行的累计时间。

    【讨论】:

      【解决方案2】:

      我会这样做:

      1. 使用“JDBC Request - Get Count”采样器从 db 中获取需要删除的数据
      2. 使用 BeanShell 断言检查是否有更多可以删除的数据。否则停止线程
      3. 执行删除数据的请求
      4. 线程组应该停止测试错误

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-01-01
        • 1970-01-01
        • 2021-10-16
        • 1970-01-01
        • 1970-01-01
        • 2018-01-22
        • 1970-01-01
        相关资源
        最近更新 更多