MySQL数据库是当前最常用的数据库之一,因此MySQL的ETL相关问题也比较多,这里我们来讨论一下数据批量操作的优化
当前数据批量写入或更新几乎使用的都是JDBC的方式,但是JDBC驱动在默认情况下会无视executeBatch()语句,也就是说我们所期望的批量执行,其实都只是单条插入,造成性能很低。
这个时候我们需要设置rewriteBatchedStatements参数置为true,驱动就会帮我们批量执行sql
在各种开发语言里,添加方式为在jdbc后加入&rewriteBatchedStatements=true
例如 jdbc:mysql://localhost:3306/mydb?serverTimezone=GMT&rewriteBatchedStatements=true
在其他用jdbc传输的工具里,比如kettle是在参数选项里添加(其本质也是添加jdbc)
由下图可以看到加参后提升非常明显