问题
最近发现之前一个批量插入的导数据功能跑的很慢,采用jdbc预插入executeBatch 1000条大概12s左右,希望可以提升效率
解决方案
老 版Mysql的JDBC驱动中对批量更新executeBatch仍是以逐条方式进行的,这一点有网友捕捉通讯报文得以证实。虽然已经使用了预编译语句, 仍会与Mysql产生很多次连接。
若要解决问题需使用Mysql的 JDBC驱动mysql-connector-java-5.1.13以上,此时可在连接URL中加入 rewriteBatchedStatements=true 来使其缓冲后批量更新以提高性能。从网友的测试结果上来看性能提高将近10倍以上。Mysql库本身在3.1.13以上支持此参数。
我的版本是5.1.30,加入该参数后速度飞快,其它版本没有测试过。