Я использую hibernate для обработки данных в своем приложении. Приложение работает нормально, но я сталкиваюсь со временем, связанным с производительностью в приложении. Сценарий: у меня есть одна таблица, которая расположена удаленно и содержит около 100000 строк. Мне нужно вставить эти данные в таблицу локальной базы данных (с другой структурой), используя некоторое сопоставление (чтобы я мог знать, какой удаленный столбец таблицы эквивалентен столбцу локальной таблицы). для обработки этих данных требуется 9 часов. Я выполняю собственные SQL-запросы. это вызывает проблемы с производительностью? Любое предложение будет оценено по достоинству.
Задайте следующие свойства Hibernate для включения пакетной обработки:
Вы должны очистить сеанс, как только пакет обрабатывается для очистки памяти. Это позволяет использовать меньший размер кучи, что уменьшает вероятность длительных прогонов GC:
session.flush(); session.clear();
Используйте новые генераторы идентификаторов, и в случае использования последовательностей БД вы можете выбрать оптимизатор с пулом. Использование алгоритма hi/lo уменьшит последовательность вызовов и повысит производительность.
Не используйте генератор идентификаторов, поскольку это приведет к отключению дозирования