PreparedStatement.executeBatch批量执行慢

使用PreparedStatement.executeBatch批量插入数据时非常慢,排查发现数据不是批量插入的,数据是单条执行入库,参考mysql在jdbcUrl加了rewriteBatchedStatements=true,没有什么效果。咨询一下原因是什么。orm使用的是ibatis-sqlmap-2.3.4.726版本。理论上应该是一次性提交才对。
测试代码:


排查插入模板,在循环预处理时,处理很快,在执行批量插入时比较慢。进一步跟踪代码,
在代码com.ibatis.sqlmap.engine.execution.SqlExecutor.Batch#executeBatch批量执行时较慢。

在ps.executeBatch()执行完毕后在db可以查到对应数据,且通过和db插入结果查看信息对比发现,这里数据提交不是一次性提交,属于一条条执行,因此整体执行时间比较慢。

改之前jdbcurl:http://?Action=&User_ID=&UID=&ObRegion=&database=test
改之后jdbcurl:http://
?Action=&User_ID=&UID=&ObRegion=&database=test&rewriteBatchedStatements=true

首先,你是多少条一个batch? mysql驱动上少于等于3条的批,忽略,按照单条执行。

然后是url是否还有其他参数?

然后看监控,是不是一个批量,还是一条一条,就是为了确认是否生效。

能提供测试代码,url,租户配置这些更好。不然根据你上边描述,谁也解决不了你的问题。

只有提供更全面信息,才能分析找到原因

修改补充部分代码细节