我正在将大量数据插入 RavenDB 数据库;约 2 500
000 条记录。这需要在尽可能短的时间内完成。
我使用一个列表来保存 SaveChangesAsync 返回的 Task 对象:
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 核)和 12 GB 内存的机器上运行。如果我持有的 Task 对象的数量为 2(如您在代码中看到的那样),它会起作用,但如果我将此数字增加到 8(核心数),我会收到 System.IndexOutOfRangeException (有时还会收到 System.AggregateException ,上面写着:“ Raven.Abstractions.Exceptions.ConcurrencyException:尝试使用非当前 etag 对文档“X/I”进行 PUT”)。
这里有什么问题?
谢谢