Я использую Mysql, Spring Data JPA. В моем случае использования у меня есть только 1 таблица, например. Клиент (ID, FIRST_NAME, LAST_NAME). Я пытаюсь добиться пакетного/массового обновления, в котором операторы обновления представляют собой группу, как показано выше в примере для сокращения количества обращений к базе данных.
Я установил все свойства
- hibernate.order_inserts: правда
- hibernate.order_updates: правда
- hibernate.jdbc.batch_versioned_data: правда
Но результат (инструкции обновления не группируются): журналы из общих журналов MySQL
2018-10-28T03:18:32.545233Z 1711 Query update CUSTOMER set FIRST_NAME=’499997′, LAST_NAME=’499998′ where id=499996;
2018-10-28T03:18:32.545488Z 1711 Query update CUSTOMER set FIRST_NAME=’499998′, LAST_NAME=’499999′ where id=499997;
2018-10-28T03:18:32.545809Z 1711 Query update CUSTOMER set FIRST_NAME=’499999′, LAST_NAME=’500000′ where id=499998;
Желаемый результат: (обновления группируются в один запрос, что сокращает количество обращений к БД)
2018-10-28T03:18:32.545233Z 1711 Query update CUSTOMER set FIRST_NAME=’499997′, LAST_NAME=’499998′ where id=499996; update CUSTOMER set FIRST_NAME=’499998′, LAST_NAME=’499999′ where id=499997; update CUSTOMER set FIRST_NAME=’499999′, LAST_NAME=’500000′ where id=499998;
Моему приложению необходимо выполнить более 100 миллионов обновлений, и я полагаю, что это самый быстрый способ.