У меня есть шаг весеннего пакета, который читает из файла, обрабатывает записи и записывает в файл, используя обработку чака.Ожидается, что файл будет содержать миллионы больших записей.Я прочитал, что Spring хранит количество обработанных записей [chunk-size] в памяти, прежде чем передать его автору.
Чтобы оптимизировать использование памяти, я оставил [размер куска] небольшим.Это, однако, увеличивает количество обновлений, которые шаг делает с таблицей метаданных BATCH_STEP_EXECUTION, чтобы обновить счетчик чтения и принятия.
Учитывая, что я читаю и записываю в локальные файлы, обновления на удаленном сервере базы данных относительно дороги.Если я увеличу размер куска, использование памяти возрастет.
Частота фиксации не имеет большого значения для написания локальных файлов, поэтому для меня проблемой являются обновления метаданных.Шаг перезапускается, поэтому технически мне не нужно регистрировать промежуточные коммиты.
Я мог бы просто использовать карту или базу данных в памяти для JobRepository, но мне нужна другая информация, такая как время начала / окончания, и эта проблема касается только одного шага.
есть какие-либо параметры конфигурации, которые могут отключить обновления промежуточного числа коммитов в репозитории заданий или, скажем, записать записи чанка из памяти в хранилище, которые ранее были зафиксированы только с частотой размера чанка / коммитом.В основном я смотрю, есть ли что-то, что отделяет размер фрагмента от частоты коммитов.