java – 为什么Spring的jdbcTemplate.batchUpdate()这么慢?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 为什么Spring的jdbcTemplate.batchUpdate()这么慢?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1163字,纯文字阅读大概需要2分钟。
内容图文
我正在尝试找到更快的批量插入方法.
我试着用jdbcTemplate.update(String sql)插入几个批次,其中
sql由StringBuilder构建,看起来像:
INSERT INTO TABLE(x, y, i) VALUES(1,2,3), (1,2,3), ... , (1,2,3)
批量大小正好是1000.我插入了近100批.
我使用StopWatch检查了时间并找出了插入时间:
min[38ms], avg[50ms], max[190ms] per batch
我很高兴,但我想让我的代码变得更好.
之后,我尝试使用jdbcTemplate.batchUpdate,如:
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int i) throws SQLException {
// ...
}
@Override
public int getBatchSize() {
return 1000;
}
});
sql的样子
INSERT INTO TABLE(x, y, i) VALUES(1,2,3);
我很失望! jdbcTemplate以分开的方式执行1000行批处理的每个插入.我在mysql_log上找到了,发现有一千个插入.
我使用StopWatch检查了时间并找出了插入时间:
min [900ms],avg [1100ms],每批最大[2000ms]
那么,任何人都可以向我解释一下,为什么jdbcTemplate在这个方法中做了单独的插入?为什么方法的名称是batchUpdate?
或者可能是我以错误的方式使用这种方法?
解决方法:
JDBC连接URL中的这些参数可以对批处理语句的速度产生很大影响 – 根据我的经验,它们可以加快速度:
?useServerPrepStmts=false&rewriteBatchedStatements=true
内容总结
以上是互联网集市为您收集整理的java – 为什么Spring的jdbcTemplate.batchUpdate()这么慢?全部内容,希望文章能够帮你解决java – 为什么Spring的jdbcTemplate.batchUpdate()这么慢?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。