Mysql批处理写入数据库
在学习mybatisPlus时,看到一个原本没用过的参数:
rewriteBatchedStatements=true
将上述代码装入jdbc的url中即可使数据库启用批处理写入。
需要注意的是,这个参数仅适用于MySQL JDBC 驱动的私有扩展参数。
作用原理是:
原本的数据插入是一条一条进行插入,每次插入都会进行提交,每次提交都会造成网络延迟,所以时间自然就会缓慢。
所以想要提高插入速度,我们可以将这些批量插入的语句使用foreach来进行拼接,也就是将这些插入语句合并为一条,那么最终只需要进行提交一次。
或者使用mysql语句开启批处理,让数据库完成自动拼接。两者效果是相同的,所以为了省事还是直接使用语句,让数据库进行拼接。
简单来说,省下来的时间实际上是网络延迟。
还需要注意:mysql批处理的缓存大小为4MB,建议每次缓存数据不要超过1000条,否则会出现存储max的异常。