设为首页 加入收藏

TOP

JDBC批量操作性能提升
2015-11-21 01:45:27 来源: 作者: 【 】 浏览:0
Tags:JDBC 批量 操作 性能 提升

JDBC

当使用INSERT INTO....VALUES()语句批量插入的时候,应该使用JDBC的PreparedStatement的批量操作方法,而不是采用一条一条执行的方法。
例如:
\
如上图,代码有3个关键的处理步骤:
1)关闭自动提交
2)addBatch
3)executeBatch
使用这种方法,SQLite测试时的效果提升非常明显,从 10000/s提升到100000/s(数据仅做参考,不能作为决策依据)
需要注意的是:这种方式只适合相同结构的SQL语句批量执行,对于不同结构的SQL语句不能用这种方式,因为PreparedStatement在初始化的时候要指定sql

MySQL

使用上述参数后,MySQL的性能也有一定的提升,但提升不明显。经过查找,确认和如下两个参数有关:
rewriteBatchedStatements=true

mysql默认关闭了batch处理, 通过此参数进行打开, 这个参数可以重写向 数据库提交的SQL语句

useServerPrepStmts=false

如果不开启(useServerPrepStmts=false), 使用com.mysql.jdbc.PreparedStatement进行本地SQL拼装, 最后送到db上就是已经替换了?后的最终SQL

经过测试,打开这2个参数后,mysql的批处理性能从1000多提升到50000多

详细请参考:http://www.2cto.com/database/201403/284326.html

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇【MongoDB】-MongoVUE增删改查使.. 下一篇数据库索引的使用

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: