【问题标题】:Performance issue with RavenDBRavenDB 的性能问题
【发布时间】:2011-12-21 15:54:41
【问题描述】:

我创建了一个简单的基于 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 秒或更长时间。

有什么方法可以更快地做到这一点吗?

【问题讨论】:

    标签: database lucene ravendb


    【解决方案1】:

    好吧,您正在执行一个查询,该查询必须获取 5000 个项目,通过网络发送它们并将它们从 Json 反序列化到 School POCO。对于这一切,每秒 1000 个项目还不错。

    话虽如此,你拿回来的学校物品清单要做什么?一般来说,你不需要一次使用 5000 个项目,这就是为什么 RavenDB 有paging built-in

    【讨论】:

    • 将所有文档加载到数组中的原因是因为我需要在每个文档的所有字符串属性中搜索某些模式。最初,我尝试使用 Lucene 查询来进行模式搜索,但没有成功。最好的比喻是做一些类似于 SQL 'LIKE' 语法的事情。
    • 当你可以直接在Lucene中进行这种查询时,这样做确实效率很低。您能否在 RavenDB 邮件列表 groups.google.com/group/ravendb 上发布问题,说明您在查询时遇到的问题?
    • 谢谢,我会汇总我的查询问题的描述并将其发布到 RavenDB 邮件列表。
    【解决方案2】:

    您实际上是在使用动态索引来执行此操作,因此很可能是您第一次使用动态索引获取它。 而且你真的应该考虑在服务器上做任何过滤,而不是在客户端上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-28
      相关资源
      最近更新 更多