RavenDB的性能问题



我创建了一个简单的基于RavenDB的应用程序,其中有3000个文档,由15个字符串和int属性组成。其中一个属性(CType)对所有文档具有相同的值,我使用此字段作为使用Lucene查询将所有文档加载到数组中的方式:

var store = new DocumentStore { Url = "http://localhost:8080", DefaultDatabase = "GIS" };
store.Initialize();
using (var session = store.OpenSession())
{
    var school = session.Advanced.LuceneQuery<School>()
        .Where("CType:School") // all documents have CType = "School"
        .Take(5000)
        .ToArray();

这段代码的工作原理是,它确实将所有3000个文档读入数组,但它需要5秒或更长时间才能完成加载。

有没有更快的方法?

嗯,您正在执行一个查询,该查询必须获得5000项,通过网络发送它们,并将它们从Json反序列化到学校POCO。对于所有这些,每秒1000个条目并不是那么糟糕。

说了这么多,你要怎么处理你收到的学校物品清单呢?一般来说,你不需要一次使用5000个条目,这就是为什么RavenDB内置分页

实际上使用的是动态索引,所以第一次使用动态索引获得它时,您应该真正考虑在服务器上进行任何过滤,而不是在客户端上。