Spring Data - сохранение и удаление множества записей - PullRequest
0 голосов
/ 18 мая 2019

Я работаю над приложением, которое загружает данные GTFS и преобразует их из CSV в базу данных SQL. Этот процесс периодически запускается, когда все данные сначала удаляются, а затем снова преобразуются.

Один из CSV содержит много записей, около 2 миллионов. Это заставляет весь процесс занимать довольно много времени (> 15 минут)

Я использую Spring Data JpaRepositories. Сначала я удаляю все данные

repository.deleteAllInBatch();

затем я анализирую данные из CSV в объект POJO и добавляю их в ArrayList (это занимает лишь часть времени всего процесса) и сохраняю все данные в базе данных, используя

repository.saveAll(listOfObjects);

Данные в настоящее время хранятся в базе данных файлов H2. Я не знаю, получаю ли я ожидаемые результаты, и процесс должен занять так много времени, или я делаю что-то не так, и я мог бы оптимизировать.

Я пытался установить spring.jpa.properties.hibernate.jdbc.batch_size на разные значения, но с очень небольшим улучшением, иногда даже с падением производительности, поскольку я действительно не знаю, каким будет наилучшее значение.

...