如何让JDBC Sampler在JTL文件中报告返回行数而非BYTES字段?
让JDBC Sampler在.jtl文件中报告查询返回行数的方法
当然可以实现,不需要修改JMeter核心代码,通过给采样结果添加自定义字段即可解决,具体步骤如下:
1. 配置JDBC Sampler的变量名
在JDBC Sampler的Variable names字段中输入任意变量名(比如queryResult)。设置后:
- 若执行SELECT查询,JMeter会自动生成
queryResult_#变量,其值就是查询返回的行数 - 若执行INSERT/UPDATE/DELETE等DML语句,受影响行数会默认存储在
update_count变量中
2. 添加JSR223 PostProcessor
给目标JDBC Sampler添加子元素JSR223 PostProcessor,在脚本区域写入Groovy代码:
// 兼容查询和DML语句的行数获取逻辑 def rowCount = vars.get("queryResult_#") ?: vars.get("update_count") ?: "0" // 将行数作为自定义字段添加到采样结果 prev.addCustomField("ReturnedRows", rowCount)
3. 验证结果
运行测试后查看生成的.jtl文件,会新增ReturnedRows字段:
- 当查询无返回行(或DML无影响行)时,字段值为
0 - 当查询有返回行(或DML有影响行)时,字段值为对应行数
通过这个字段就能直接区分空结果和有结果的查询延迟,解决默认BYTES字段无法区分该场景的问题。
内容的提问来源于stack exchange,提问作者Mats Johansson
相关产品推荐
相关产品推荐

