#spring-batch
#spring-batch
Вопрос:
Я работаю над проектом spring batch для записи около 10 миллионов записей, размер моего пакета составляет 60 тыс. элементов, при мониторинге производительности я вижу много задержек на этапе записи. Могу ли я установить размер буфера для записи или есть что-нибудь, что я могу сделать, чтобы преодолеть эту проблему и повысить производительность? С уважением
Комментарии:
1. У вас есть какие-то цифры о задержках? Программа записи буферизует все строки перед их сбросом в выходной файл. Итак, в вашем случае у вас будет строка с 60 Тыс. буферизованных строк в каждом фрагменте. Вы пробовали уменьшить размер блока? Что бы вы посчитали «хорошей» производительностью?
2. прямо сейчас каждый цикл записи занимает около 25 секунд, для меня я предпочитаю не уменьшать размер блока, у меня медленная БД, поэтому мне лучше уменьшить количество вызовов БД за счет увеличения размера блока, кстати, я выполняю пакетные вызовы БД в writer listener.
3. В этом случае может случиться так, что ваши вызовы db в прослушивателе записи замедляют работу (поскольку ваша БД работает медленно). Чтобы ответить на ваш вопрос, размер буфера, который вы можете установить на
FlatFileItemWriter
.4. Я говорю только о функции записи, части записи в CSV, я запускаю все пакетные вызовы SQL перед записью и временем регистрации, моя единственная проблема здесь — запись в CSV, вызовы DB не включены