2013-07-05 1 views
2

Я написал весеннюю партию, которая имеет commitInterval из 50. Элемент ItemReader, который я использую, имеет fetchSize 200. Так что, согласно моему пониманию, читатель получит 200 записей, но только куски из 50 будут быть совершены. Таким образом, для каждой выборки из 200 записей будет выполнено 4 фиксации из 50. Я прав?Влияние увеличения commitInterval в SpringBatch

Моя проблема заключается в том, что у нас есть множество весенних партий, и может быть сценарий, в котором одновременно выполняется несколько партий. Если я увеличу commitInterval до 200, это повлияет на производительность других партий, которые имеют меньшие commitIntervals?

Просьба сообщить.

ответ

3
  1. Да - вы правы, fetchSize принесет 200 записей, а фиксация - «фиксация» в 50 блоках записей.

  2. большие интервалы фиксации могут грубо перевести на более крупные транзакционные «курсоры» для фиксации. то есть вы получите некоторую производительность при сокращении служебных данных транзакции (около 1/4, если установлено значение 200).

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

в зависимости от подверженности вашей архитектуры отказам (то есть, насколько безопасным и стабильным является ваше подключение к источнику данных, например) будет управлять тем, насколько рискованно совершать 200 против 50 записей за раз. я был бы в пользу соответствия вашего fetchSize вашему интервалу фиксации, так как без менеджера повторов вы теряете fetchSize, когда возникает сбой при фиксации.

 Смежные вопросы

  • Нет связанных вопросов^_^