mongodb查询响应时间慢
Posted
技术标签:
【中文标题】mongodb查询响应时间慢【英文标题】:Mongodb query slow response time 【发布时间】:2015-05-31 20:05:24 【问题描述】:我正在开发一个使用灵活模式的项目。我已经设置了一个本地 mongodb 服务器并在节点内使用 mongoose。
遇到一个有趣的扩展问题,想知道这些响应时间是否正常。如果查询返回 50 个文档,我需要 5-10 秒让 mongo 响应。在同一个集合中,返回 2 个文档的查询是毫秒。
这不是一个缓慢的连接,因为它是本地的,想知道是否有人知道导致这种情况的原因。
我使用的是 OS X 和 mongo 3.0.1
编辑:目前文档几乎是空的,只有一两个属性。
编辑:文档的总数并不重要,只是返回的大小。如果有 51 个文档,50 个像 _id: "...", _schema:"bar"
和 1 个 _id:"...", _schema: "foobar"
,那么 collection.find(_schema:"bar")
需要几秒钟,collection.find(_schema:"foobar")
不需要时间。
解释输出:
"queryPlanner" :
"plannerVersion" : 1,
"namespace" : "mean-dev.documentmodels",
"indexFilterSet" : false,
"parsedQuery" :
"$and" : [ ]
,
"winningPlan" :
"stage" : "COLLSCAN",
"filter" :
"$and" : [ ]
,
"direction" : "forward"
,
"rejectedPlans" : [ ]
,
"serverInfo" :
"host" : "Sams-MBP.local",
"port" : 27017,
"version" : "3.0.1",
"gitVersion" : "nogitversion"
,
"ok" : 1
【问题讨论】:
没有任何其他信息,我看不出这是如何回答的。不过好像不太正常。 【参考方案1】:不,不应该花那么多时间。
问题可能在于查询中的操作(投影、排序、地理搜索、分组等)。解决这个问题的最佳方法是创建索引来加速此类查询。
要在 _schema
字段上创建索引,请在 mongodb 中执行该命令:
db.collection.ensureIndex("_schema":1);
【讨论】:
以上是关于mongodb查询响应时间慢的主要内容,如果未能解决你的问题,请参考以下文章