RavenDBデータベースに大量のデータを挿入しています。約500
2000レコード。それは可能な限り短い時間で完了する必要があります。
リストを使用して、SaveChangesAsyncによって返されるタスクオブジェクトを保持します。
session.Store(loc);
splitter++;
if (splitter % 2048 == 0)
{
var t = session.SaveChangesAsync();
tasks.Add(t);
if (tasks.Count == 2)
{
Task.WaitAll(tasks.ToArray());
tasks.Clear();
}
}
このコードは、i7(8コア)および12GBRAMを搭載したマシンで実行されています。保持しているタスクオブジェクトの数が2(コードでわかるように)の場合は機能しますが、この数を8(コアの数)に増やすと、System.IndexOutOfRangeException(場合によってはSystem.AggregateException)を受け取ります。 Raven.Abstractions.Exceptions.ConcurrencyException:PUTが、現在以外のetagを使用してドキュメント「X / I」で試行されました」)。
ここでの問題は何ですか?
ありがとう