在RavenDB中使用SaveChangesAsync

Kav*_*ian 2 c# asynchronous insert nosql ravendb

我将大量数据插入RavenDB数据库; 大约2 500000条记录.这需要在尽可能短的时间内完成.

我使用一个列表来保存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();
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码在具有i7(8核)和12 GB RAM的机器上运行.如果我持有的Task对象的数量是2(如您在代码中看到的那样),但是如果我将此数字增加到8(核心数),则会收到System.IndexOutOfRangeException(有时会出现System.AggregateException: Raven.Abstractions.Exceptions.ConcurrencyException:PUT尝试使用非当前的etag文档'X/I'.

这里有什么问题?

谢谢

Aye*_*ien 5

每个会话只能有一个异步挂起操作.