Mongodb 查询响应时间慢
Mongodb query slow response time
我正在从事一个使用灵活模式的项目。我设置了一个本地 mongodb 服务器并在节点内使用 mongoose。
有一个有趣的缩放问题,想知道这些响应时间是否正常。如果查询 returns 50 个文档,我需要 5-10 秒才能 mongo 做出响应。在同一个集合中,查询 returns 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
不,应该不会花那么多时间。
问题可能出在您的查询操作中(投影、排序、地理搜索、分组等)。解决这个问题的最佳方法是创建索引来加速此类查询。
要在 _schema
字段上创建索引,请在 mongodb 中执行该命令:
db.collection.ensureIndex({"_schema":1});
我正在从事一个使用灵活模式的项目。我设置了一个本地 mongodb 服务器并在节点内使用 mongoose。
有一个有趣的缩放问题,想知道这些响应时间是否正常。如果查询 returns 50 个文档,我需要 5-10 秒才能 mongo 做出响应。在同一个集合中,查询 returns 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
不,应该不会花那么多时间。
问题可能出在您的查询操作中(投影、排序、地理搜索、分组等)。解决这个问题的最佳方法是创建索引来加速此类查询。
要在 _schema
字段上创建索引,请在 mongodb 中执行该命令:
db.collection.ensureIndex({"_schema":1});