Повышение производительности Spring batch FlatFileItemWriter

#spring-batch

#spring-batch

Вопрос:

Я работаю над проектом spring batch для записи около 10 миллионов записей, размер моего пакета составляет 60 тыс. элементов, при мониторинге производительности я вижу много задержек на этапе записи. Могу ли я установить размер буфера для записи или есть что-нибудь, что я могу сделать, чтобы преодолеть эту проблему и повысить производительность? С уважением

Комментарии:

1. У вас есть какие-то цифры о задержках? Программа записи буферизует все строки перед их сбросом в выходной файл. Итак, в вашем случае у вас будет строка с 60 Тыс. буферизованных строк в каждом фрагменте. Вы пробовали уменьшить размер блока? Что бы вы посчитали «хорошей» производительностью?

2. прямо сейчас каждый цикл записи занимает около 25 секунд, для меня я предпочитаю не уменьшать размер блока, у меня медленная БД, поэтому мне лучше уменьшить количество вызовов БД за счет увеличения размера блока, кстати, я выполняю пакетные вызовы БД в writer listener.

3. В этом случае может случиться так, что ваши вызовы db в прослушивателе записи замедляют работу (поскольку ваша БД работает медленно). Чтобы ответить на ваш вопрос, размер буфера, который вы можете установить на FlatFileItemWriter .

4. Я говорю только о функции записи, части записи в CSV, я запускаю все пакетные вызовы SQL перед записью и временем регистрации, моя единственная проблема здесь — запись в CSV, вызовы DB не включены