Я работаю над приложением, которое загружает данные 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
на разные значения, но с очень небольшим улучшением, иногда даже с падением производительности, поскольку я действительно не знаю, каким будет наилучшее значение.