2

我们在 Mongo 2.2 和 Rails 3.2.12 上构建了一个 Rails 应用程序。我们是 Mongo 的新手,如果我们应该如何优化非常慢的查询,那些耗时超过 1000 毫秒的查询,我们将不胜感激。

我们使用 MongoMapper 作为 Mongo 的接口。

我们正在索引这些表,但是有没有办法确认我们的查询是否正确使用了这些索引?我们还能如何查明缓慢的原因?

这是一天的慢 Mongo 查询:https ://gist.github.com/panabee/2876e833002f3151eeda

以下是对其中三个查询的解释:https ://gist.github.com/panabee/358bd87ba7b954018dab

4

1 回答 1

0

您的问题是架构设计、索引设计以及处理当前负载的资源可能不足(可能 - 如果不先修复查询就无法判断)。

在设计架构时,您必须考虑如何访问数据以进行读取和写入。您的文档结构和索引策略必须反映读取和写入的需求。您当前的查询必须扫描数以千计的文档才能选择极少数——这反映了索引策略不佳。通过有效的索引,您的查询应该能够使用索引将他们需要的文档数量归零,此外,如果必须进行排序,那么索引也应该支持这些。

这不适合回答问题,因为您的问题不在于您缺少单个索引或使用错误类型的查询。您需要根据应用程序的需要重新考虑架构设计和索引策略。

于 2013-05-24T03:33:27.633 回答