MongoDB中的计数性能有问题。
我使用ZF2和Doctrine ODM与SoftDelete过滤器。现在当查询"第一次"使用db.getCollection('order').count({"deletedAt": null})
收集,大约需要30秒,有时甚至更多。第二次和更多查询大约需要150ms。几分钟后,查询再次需要大约30秒。这仅适用于尺寸为>的集合。 700MB。
服务器是Amazon EC2 t2.medium实例,Mongo 3.0.1
也许它与MongoDB preload documents into RAM for better performance相似,但这些答案并没有解决我的问题。
任何想法发生了什么?
/编辑
解释
{
"executionSuccess" : true,
"nReturned" : 111449,
"executionTimeMillis" : 24966,
"totalKeysExamined" : 0,
"totalDocsExamined" : 111449,
"executionStages" : {
"stage" : "COLLSCAN",
"filter" : {
"$and" : []
},
"nReturned" : 111449,
"executionTimeMillisEstimate" : 281,
"works" : 145111,
"advanced" : 111449,
"needTime" : 1,
"needFetch" : 33660,
"saveState" : 33660,
"restoreState" : 33660,
"isEOF" : 1,
"invalidates" : 0,
"direction" : "forward",
"docsExamined" : 111449
},
"allPlansExecution" : []
}