Почему обновление занимает много времени, но не вставляется в весеннее пакетное обновление jdbctemplate?

Я пытаюсь сделать пакетное обновление для 3000 записей. Это занимает около 15 секунд, но вставка происходит в течение 1 секунды.

Также включил rewriteBatchedStatements=true. Мне нужно сделать что-нибудь еще?

Ниже приведен мой код (не включает обработку исключений и количество успехов и неудач/идентификаторы. Они одинаковы как для обновления, так и для вставки).

Используемые технологии: 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();
                    }
                } );

person Explain Down Vote    schedule 06.05.2018    source источник
comment
У вас есть индекс для item_code в БД? Если нет, вы можете попробовать создать его.   -  person Vasan    schedule 06.05.2018
comment
@Vasan Это столбец уникального ключа, поэтому он уже проиндексирован.   -  person Explain Down Vote    schedule 06.05.2018


Ответы (1)


Также включите useServerPrepStmts=false .

Аналогичный вопрос был задан здесь: производительность пакетной вставки JDBC

Советы по повышению производительности Jdbc: http://javarevisited.blogspot.in/2012/01/improve-performance-java-database.html

person mindSet    schedule 06.05.2018