为什么更新需要很长时间但不能在spring jdbctemplate batchupdate中插入?

时间:2018-05-06 05:23:06

标签: java mysql spring-jdbc jdbctemplate

我正在尝试为3000条记录进行批量更新。完成大约需要15秒,但插入时间不到1秒。

还包括rewriteBatchedStatements=true。我还需要做其他事吗?

下面是我的代码。(不包括异常处理以及成功和失败计数/ ids部分。更新和插入都是相同的。)

使用的技术:spring,jdbctemplate,mysql,java,intellij idea

  result = jdbcTemplate.batchUpdate(
                //"insert into xxx(aaa,bbb,item_code) values(?,?,?)",
                        "update ignore xxx set aaa = ?, bbb= ? where item_code = ?",
                        new BatchPreparedStatementSetter() {
                    public void setValues(PreparedStatement ps,int i) throws SQLException {
                        ps.setDouble(1, Double.parseDouble(new JSONObject(jsonArray.get(i).toString()).get("aaa").toString()));
                        ps.setDouble(2, Double.parseDouble(new JSONObject(jsonArray.get(i).toString()).get("bbb").toString()));
                        ps.setString(3, new JSONObject(jsonArray.get(i).toString()).get("code").toString());
                    }

                    public int getBatchSize() {
                        return jsonArray.length();
                    }
                } );

1 个答案:

答案 0 :(得分:1)

还包括useServerPrepStmts = false。

此处提出类似问题: JDBC batch insert performance

Jdbc性能改进提示: http://javarevisited.blogspot.in/2012/01/improve-performance-java-database.html