我用一個簡單的批處理讀取和更新CouchDB的運行超時。CouchDB的查詢時,在批次連續更新
int batchSize = 5000;
String startKey = "";
List<FrontLineWorker> frontLineWorkers;
while (true) {
frontLineWorkers = allFrontLineWorkers.getMsisdnsFrom(startKey, batchSize);
if (frontLineWorkers.size() < batchSize) break;
for (FrontLineWorker frontLineWorker : frontLineWorkers) {
// process record, only updates record
}
startKey = frontLineWorkers.get(frontLineWorkers.size() - 1).getMsisdn();
}
getMsisdnsFrom是一個沙發查詢,它在幾次後開始超時。我知道只有在讀取完成時,沙發纔會索引視圖,但由於我只更新記錄,所以不應該影響索引。此外,由於這是一個預期的用途,獲得一組記錄,修改並獲得下一組,我不指望它超時。
我試着批處理時間1000和5000
異常消息是:異常在線程「主要」 org.ektorp.DbAccessException:java.net.SocketTimeoutException:讀超時
編輯:在我將批量縮減到100之後,它工作正常,但我希望批量更大。
是的,我知道,但100是數據庫的一個非常差的大小。我想知道在使用它的過程中是否有錯誤。但似乎這是唯一的選擇。謝謝。 – nutsiepully 2012-07-18 07:03:21