2013-07-05 37 views
2

我寫了一個commitInterval爲50的spring批處理。我使用的itemReader的fetchSize爲200.所以根據我的理解,讀者將獲取200條記錄,但只有50條記錄會被承諾。因此,對於200條記錄的每次提取,將執行50次提交。我對麼?在SpringBatch中增加commitInterval的影響

我的問題是,我們有許多配置的彈簧批次,並且可能有多個批次同時運行的情況。如果我將commitInterval增加到200,它會影響其他具有較小commitIntervals的批處理的性能?

請指教。

回答

3
  1. 是的 - 你說得對,fetchSize將帶來200條記錄,commit-interval將在50個記錄塊中提交。

  2. 較大的提交時間間隔大致可以轉化爲較大的事務「遊標」提交。也就是說,您將在交易開銷減少時獲得一些性能(如果設置爲200,則大約爲1/4)。

這樣做的'風險'是,如果在提交時間間隔內發生異常,您將失去更多'工作'。 (而不是在失敗時丟失最多49條記錄,則可能會丟失至199條並且必須再次執行)

取決於您的架構暴露於失敗(例如,數據源連接的安全性和穩定性)將決定一次有200個對50個記錄承擔風險的風險。如果沒有重試管理器,我會贊成將您的fetchSize與您的提交間隔相匹配,但在提交失敗時丟失了fetchSize。

相關問題