Лучший способ вставить 1 миллион записей, используя весенний отдых и данные jpa - PullRequest
0 голосов
/ 07 марта 2020

Когда мы пытаемся вставить 1 миллион записей с помощью пружинных пакетных вставок, у нас получается более 1 минуты времени и настраивается основополагающее основное облако dry отправка обратно 502 неверных ответов шлюза клиенту, даже фактическая вставка данных происходит в background.

Не могли бы вы сообщить мне, как лучше всего обрабатывать массовые вставки данных, которые могут быть обработаны за меньшее время?

1 Ответ

0 голосов
/ 07 марта 2020

Я бы сказал, что весенний пакет - это правильный подход.

Ну, я бы загрузил файл через API и вернул идентификатор процесса. Позже я могу спросить штат о процессе, если он сделан, или не удалось или что-то еще. Эта реализация деталей до. В этом случае не имеет значения, если вы загружаете файл с 10 записями, 1.000.000 или 100.000.000 записей.

Но, читая файл с большим количеством записей, я бы предложил обработать их порциями , Это идеально подходит для хранения данных в памяти небольшого размера и сохранения большого количества данных (размера куска) за один раз. Конечно, вы не должны загружать файл один раз, если это возможно, использовать поток или читать файл построчно.

При сохранении данных вы сохраняете фрагменты в пакете. Используйте PreparedStatemant и его команду addBatch / executeBatch, что, на мой взгляд, является самым быстрым способом сделать это в приложении.

В baeldung есть две хорошие записи, которые вы должны прочитать:

Baeldung.com - Spring Batch - Тасклеты против кусков - Взгляните на часть чанков.

Baeldung.com - Пакетная обработка в JDB C - Посмотрите на PreparedStatement

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...