Какова лучшая стратегия для переноса 10M записей из одной базы данных в другую (на разных серверах) с использованием Java - PullRequest
0 голосов
/ 02 ноября 2018

Я использую простой JDBC (потому что JPA был слишком медленным для меня) для реализации задания, которое будет выполняться ежедневно:

  1. Установить ложную авто-фиксацию
  2. TRUNCATE TARGET TBL (требуется для удаления данных за предыдущий день)
  3. LOOP - ВЫБРАТЬ ИЗ Servr1.DB.SRC партиями по 5000
  4. ВСТАВИТЬ ПАКЕТ 5000 В Servr2.DB.SRCTarget
  5. Продолжить цикл или Перейти # 6
  6. Connection.commit

Это работает для меня, но есть несколько проблем-

а. Загрузка все еще медленная, так как на загрузку миллиона уходит 20 минут. Я рассчитываю, что за 10 мес. Он пойдет до 3 часов. Можно ли это уменьшить?

б. Когда я выполняю SELECT COUNT (из клиента SQL) во время выполнения задания, и SELECT, и INSERT (в задании) блокируются, и мне приходится перезагружать сервер, на котором развернут код Java, чтобы снять блокировки. Можно ли это предотвратить?

Примечание. Уровень изоляции, установленный в целевой БД, - зафиксирован

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