我们需要快速存储大量数据,一次存储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 ram的计算机上以默认配置在docker容器中运行。 文档中说到“在商品硬件上进行15万次写入”,但我看不到有任何类似的东西。 我想念什么吗?
答案 0 :(得分:2)
使用批量插入将获得更好的性能,请参见此处: https://ravendb.net/docs/article-page/4.1/Csharp/client-api/bulk-insert/how-to-work-with-bulk-insert-operation#example
并行化插入将获得更好的性能。