由于项目中经常需要批量更新/导出上万条数据,使用了spring jdbcTemplate 提供的batchUpdate(String sql,BatchPreparedStatementSetter pss) 方法,速度很慢,5000条数据需要3分钟才能完成。
疑点1:jdbc driver版本可能有问题。我使用的是 mysql-connector-java-3.0.11-stable-bin.jar,到官方下载5.1.12,再试,还是慢。
疑点2:mysql server没有开启批量操作。查了一下,确实需要手工开启这项功能。很简单,只需在 jdbc url 后跟一个参数rewriteBatchedStatements=true即可(jdbc:mysql:///test?[b]rewriteBatchedStatements=true[/b])。再试,5000条数据在15钞导出完毕!
注意:要让rewriteBatchedStatements=true发挥作用,jdbc driver 版本需要 5.1.8 及以上。
疑点1:jdbc driver版本可能有问题。我使用的是 mysql-connector-java-3.0.11-stable-bin.jar,到官方下载5.1.12,再试,还是慢。
疑点2:mysql server没有开启批量操作。查了一下,确实需要手工开启这项功能。很简单,只需在 jdbc url 后跟一个参数rewriteBatchedStatements=true即可(jdbc:mysql:///test?[b]rewriteBatchedStatements=true[/b])。再试,5000条数据在15钞导出完毕!
注意:要让rewriteBatchedStatements=true发挥作用,jdbc driver 版本需要 5.1.8 及以上。