2

我们需要快速存储大量数据,一次大约 10 万条记录。我正在评估 RavenDB,我得到的指标似乎相当低——存储 10k 条记录大约需要 2.5-3 秒。

代码几乎直接来自文档:

 using (IDocumentStore store = new DocumentStore { Urls = new[] { "http://localhost:8080" }, Database = "xxx" })
{
    store.Initialize();
    for (int i = 0; i < 10; i++)
    {
        using (IDocumentSession session = store.OpenSession())  
        {
            var things = DataGenerator.GenerateListOfThings(); // gets me a 10k objects
            foreach (var thing in things)
            {
                session.Store(thing);
            }
            session.SaveChanges();
        }
    }
}

“事物”对象是一个具有大约 20 个属性的平面对象,没有什么特别之处。

我还尝试保存 1000 个实体块,这将运行时间提高了约 10%,并尝试了批量加载,结果相似。

Raven 在具有 i7、SSD 和 16Gb 内存的机器上以默认配置在 docker 容器中运行。文档说“在商品硬件上写入 150k”,但我没有看到任何接近它的东西。我错过了什么吗?

4

1 回答 1

2

批量插入将获得更好的性能,请参见此处: https ://ravendb.net/docs/article-page/4.1/Csharp/client-api/bulk-insert/how-to-work-with-bulk-insert -操作#示例

并行化插入将获得更好的性能。

于 2019-03-28T16:01:30.630 回答