Миллионы данных будут вставлены в базу данных MySQL с использованием данных JPA Spring - PullRequest
0 голосов
/ 13 марта 2019

Наше приложение основано на Java 8, Spring Data JPA и MySQL.У меня в приложении два разных источника данных, наша задача - извлечь миллионы данных (текст хранится в таблице) из одного источника данных и вставить их в другой источник данных после небольшого вычисления.Когда я пытался перебрать каждую запись и вставить ее в другую базу данных, это заняло больше времени, чем ожидалось.

Есть ли какой-нибудь стандартный и быстрый способ сделать это?Нужно ли использовать хранимую процедуру?если да, то как мне передать список объектов в процедуре?

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Не используйте JPA.Основной сценарий использования JPAs: загрузка нетривиальной модели предметной области, манипулирование ею, затем сброс ее в базу данных с автоматическим обнаружением того, что изменилось.Кажется, вам это не нужно в вашем случае использования.

Используйте JDBC и пакетные вставки. Springs JdbcTemplate пригодится .

Выберите пакет, манипулируйте им, как вам нужно, вставьте его в цель.

Для настройки процесса выбора учитывайте значение на основе нумерации страниц .

При написании рассмотрите возможность удаления ограничений и индексов и создания их после процесса.

Возможно, доступно больше специфичных для MySQL опций, но я не знаю о них.

Возможно, вы захотите разделить свою работу на три пула потоков: один для чтения, один для записи, один для обработки данных.Я не уверен, но Spring Batch может помочь с этим.

0 голосов
/ 13 марта 2019
  1. Загрузка / сохранение записей в пакетах (100 или 1000 записей за один раз).
  2. Загрузка и / или сохранение асинхронно.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...