使用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