Частота коммитов обработки блоков Spring Spring - PullRequest
1 голос
/ 10 апреля 2019

У меня есть шаг весеннего пакета, который читает из файла, обрабатывает записи и записывает в файл, используя обработку чака.Ожидается, что файл будет содержать миллионы больших записей.Я прочитал, что Spring хранит количество обработанных записей [chunk-size] в памяти, прежде чем передать его автору.

Чтобы оптимизировать использование памяти, я оставил [размер куска] небольшим.Это, однако, увеличивает количество обновлений, которые шаг делает с таблицей метаданных BATCH_STEP_EXECUTION, чтобы обновить счетчик чтения и принятия.

Учитывая, что я читаю и записываю в локальные файлы, обновления на удаленном сервере базы данных относительно дороги.Если я увеличу размер куска, использование памяти возрастет.

Частота фиксации не имеет большого значения для написания локальных файлов, поэтому для меня проблемой являются обновления метаданных.Шаг перезапускается, поэтому технически мне не нужно регистрировать промежуточные коммиты.

Я мог бы просто использовать карту или базу данных в памяти для JobRepository, но мне нужна другая информация, такая как время начала / окончания, и эта проблема касается только одного шага.

есть какие-либо параметры конфигурации, которые могут отключить обновления промежуточного числа коммитов в репозитории заданий или, скажем, записать записи чанка из памяти в хранилище, которые ранее были зафиксированы только с частотой размера чанка / коммитом.В основном я смотрю, есть ли что-то, что отделяет размер фрагмента от частоты коммитов.

1 Ответ

0 голосов
/ 11 апреля 2019

вы можете пропустить обновления метаданных напрямую, используя MapJobRepositoryFactoryBean в хранилище заданий

 <bean id="jobRepository"
    class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean">
    <property name="transactionManager" ref="transactionManager" />
  </bean>

, эти ответы могут помочь вам

BATCH_WITHOUT_PERSISTING_METADATA

SKIP_METADATA_SAVE_SPRING_BATCH

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