Mongodb计数查询性能较差



即使在索引字段上计算查询匹配的集合中的记录数也会花费太多时间。例如,假设有一个由10000条记录组成的集合,并且在该集合的createdate字段上有一个索引。从集合中获取最后10条记录比计算最后一天创建的记录数要快。返回计数查询的结果需要5秒以上的时间,有时甚至需要70秒。你知道如何解决这个问题吗?解决这个问题的最好方法是什么?

顺便说一句,我们也使用了morphia,我们看到通过morphia获取计数更慢,所以对于计数查询,我们将morphia查询转换为java驱动程序查询。有人遇到过类似的情况吗,为什么吗啡的反应更慢?这种情况是否只发生在计数查询中,或者与仅使用java驱动程序相比,它是否很慢?

帮助,建议或变通将是非常感激的,我们的应用程序严重依赖计数查询和系统的缓慢对我们来说真的很烦人。

虽然这可能不是最终答案,但让我们开始并进一步发展:

  1. 你的索引应该总是适合内存,否则你会得到非常糟糕的性能

  2. 要评估使用了多少RAM,您可以使用10gen的MMS或使用各种工具进行检查。有关低(常驻)内存使用率的描述和可能原因,请参阅http://www.kchodorow.com/blog/2012/05/10/thursday-5-diagnosing-high-readahead/。或者你只是没有访问足够的数据,在这种情况下,你可以使用MongoDB的触摸(但我怀疑,因为你已经有性能问题)。

除了添加RAM和确保使用所有可用的RAM之外,您还可以删除未使用的索引或在可能的情况下使用复合索引。

等待修复

正如Asya Kamsky评论的那样,计数表现在2.2上真的很糟糕。我们找到的唯一解决方法就是尽可能地避免使用它们。

(还有其他事情是无法解释的mongodb缓慢-如聚合查询-其中大多数都有相关的JIRA问题,正在处理/计划)

相关内容

  • 没有找到相关文章

最新更新