我们在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
答案 0 :(得分:0)
您的问题是架构设计,索引设计以及可能还没有足够的资源来处理当前负载(可能 - 如果不先修复查询就无法判断)。
在设计架构时,您必须考虑如何访问数据以进行读写。文档结构和索引策略必须反映读写的需求。您目前有查询必须扫描数千个文档以选择极少数 - 这反映了糟糕的索引策略。通过有效的索引,您的查询应该能够使用索引将所需文档的数量归零,此外,如果必须进行排序,那么索引也应该支持这些索引。
这不适合作为答案,因为您的问题不是缺少单个索引或使用错误类型的查询。您需要根据应用程序的需要重新考虑架构设计和索引策略。