我们常用的jdbc访问MySQL的连接字符串是这样配置的:
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
通常情况下这种配置方式没有什么大问题,但是遇到批量操作(增删改)时,就会发现效率十分低下。曾经的一段代码是一次性新增插入1000+条的数据,就需要等待10秒左右时间。
查询资料发现,有人说MySQL驱动并没有真正的批量更新操作batchUpdate,执行的时候还是逐条顺序将SQL发送到MySQL服务器,但是经过实际测试证实这是一种误解。
修改了jdbc的连接配置如下:
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&rewriteBatchedStatements=true
即增加一个属性rewriteBatchedStatements=true
再次执行同样的数据库批量操作代码,速度瞬间提升。增加到10000条以上也是瞬间完成。
(本示例中MySQL版本5.5)