JMeter JDBC 手动提交

Posted

技术标签:

【中文标题】JMeter JDBC 手动提交【英文标题】:JMeter JDBC manual commit 【发布时间】:2020-12-22 02:15:39 【问题描述】:

我正在使用 JMeter 进行一些负载测试,并且需要运行一个插入几千条记录的测试。部分要求是它不应该提交每个单独的更新,而只提交每千条记录。看起来很简单,但我找不到任何解释如何在 JMeter 中手动提交的示例或文档,而且我无法让它工作。

我已将其设置为从 csv 文件中读取一些条目,以及用于递增 ID 字段的计数器变量。如果启用了自动提交,则可以正常工作。 当我禁用自动提交时,没有任何东西被提交——正如你所期望的那样。但是我如何让它承诺呢?如果没有自动提交,我什至无法让它提交每个更新,更不用说指定的速率了。

我尝试使用提交语句和/或添加 JDBC 后处理器 提交查询类型,在同一个数据库连接池上,只有一个线程上 该池并在测试中,但这不起作用。 尝试对单独的 JDBC 请求执行相同的操作,但也没有用。 尝试将提交添加到我的更新语句本身,但没有成功。 尝试更改事务隔离,但这些值似乎都没有 不同。 尝试使用预处理器或 请求或在现有请求中,但这也没有帮助。

我认为我的问题可能是提交将进入与实际更新语句不同的事务...但我找不到任何方法来改变它...

【问题讨论】:

抱歉,数据库出现了一些问题,不得不等待管理员休假回来。我已经尝试按照屏幕截图所示进行配置,但我仍然得到相同的结果。数据库中没有添加新记录... 好吧,看来我已经让它工作了,给了 mariadb 连接器另一个镜头而不是 mysql 一个,这似乎已经做到了,至少在较新的 jmeter 版本上。旧版本仍然无法使用...这可能是一个问题,因为我不确定新版本是否已获得公司批准,但我会将这个问题留给管理层;) 【参考方案1】:

尝试执行以下操作:

添加 JDBC Request 并将查询类型设置为 AutoCommit(false) 根据需要放置 JDBC 请求 添加查询类型设置为提交的 JDBC 请求

你的计划应该是这样的:

将自动提交设置为 false:

然后调用您的更新查询:

最后提交:

将自动提交重置为 true:

如果这不起作用,我建议您向 JMeter 报告问题。

【讨论】:

不走运...如果这是一个 JMeter 问题,那是一个长期存在的问题。我们安装了我最初使用的 JMeter 3.2,以及 mysql 连接器版本 5.1.27,两者都很旧。所以我升级到最新的——带有mysql连接器8.0.21的jmeter 5.3,然后我注意到现在还有一个专用的mariadb连接器所以我也尝试了(2.6.2版)......但每个组合都有同样的问题这些。有点怀疑,这么基本的东西上的 Jmeter 错误已经被忽视了这么长时间......我希望这是一个“此配置不支持”的问题......但我会与 jmeter 人员核实 您能否分享您的测试计划的屏幕截图或在 JMeter 5.X 中运行:菜单工具 > 生成示意图概览。谢谢 我根据您发送给用户邮件列表的内容更新了我的答案

以上是关于JMeter JDBC 手动提交的主要内容,如果未能解决你的问题,请参考以下文章

转 jmeter 关联

spring+mybatis 手动开启和提交事务

mybatis-事物控制

JDBC_事务_小结!

JDBC事务

30 jdbc事务设置