Я использую простой JDBC (потому что JPA был слишком медленным для меня) для реализации задания, которое будет выполняться ежедневно:
- Установить ложную авто-фиксацию
- TRUNCATE TARGET TBL (требуется для удаления данных за предыдущий день)
- LOOP - ВЫБРАТЬ ИЗ Servr1.DB.SRC партиями по 5000
- ВСТАВИТЬ ПАКЕТ 5000 В Servr2.DB.SRCTarget
- Продолжить цикл или Перейти # 6
- Connection.commit
Это работает для меня, но есть несколько проблем-
а. Загрузка все еще медленная, так как на загрузку миллиона уходит 20 минут. Я рассчитываю, что за 10 мес. Он пойдет до 3 часов. Можно ли это уменьшить?
б. Когда я выполняю SELECT COUNT (из клиента SQL) во время выполнения задания, и SELECT, и INSERT (в задании) блокируются, и мне приходится перезагружать сервер, на котором развернут код Java, чтобы снять блокировки. Можно ли это предотвратить?
Примечание. Уровень изоляции, установленный в целевой БД, - зафиксирован