【发布时间】:2015-08-03 16:37:40
【问题描述】:
我使用了两个 NOSQL 数据库,MongoDB 和 Neo4j,来处理相同的信息。我想比较使用第一个和第二个数据库的性能。我谈到了我与 MongoDB in this question 的问题:执行时间毫秒总是等于 0。所以我在我的集合中添加了大约 250 个文档,但没有任何成功:
> db.team.find({common_name:"Milan"},{_id:0, "stadium.name":1}).explain("executionStats")
{
"queryPlanner" : {
"plannerVersion" : 1,
"namespace" : "Progettino.team",
"indexFilterSet" : false,
"parsedQuery" : {
"common_name" : {
"$eq" : "Milan"
}
},
"winningPlan" : {
"stage" : "PROJECTION",
"transformBy" : {
"_id" : 0,
"stadium.name" : 1
},
"inputStage" : {
"stage" : "COLLSCAN",
"filter" : {
"common_name" : {
"$eq" : "Milan"
}
},
"direction" : "forward"
}
},
"rejectedPlans" : [ ]
},
"executionStats" : {
"executionSuccess" : true,
"nReturned" : 1,
"executionTimeMillis" : 0,
"totalKeysExamined" : 0,
"totalDocsExamined" : 253,
"executionStages" : {
"stage" : "PROJECTION",
"nReturned" : 1,
"executionTimeMillisEstimate" : 0,
"works" : 255,
"advanced" : 1,
"needTime" : 253,
"needFetch" : 0,
"saveState" : 0,
"restoreState" : 0,
"isEOF" : 1,
"invalidates" : 0,
"transformBy" : {
"_id" : 0,
"stadium.name" : 1
},
"inputStage" : {
"stage" : "COLLSCAN",
"filter" : {
"common_name" : {
"$eq" : "Milan"
}
},
"nReturned" : 1,
"executionTimeMillisEstimate" : 0,
"works" : 255,
"advanced" : 1,
"needTime" : 253,
"needFetch" : 0,
"saveState" : 0,
"restoreState" : 0,
"isEOF" : 1,
"invalidates" : 0,
"direction" : "forward",
"docsExamined" : 255
}
}
}
例如在 MongoDB 中,这个查询会比在 Neo4j 中工作得更好,因为我使用了非规范化模型来表示有关球队体育场的信息。事实上,在 Neo4j 中,这个查询需要 50 ms,如您所见:
那么,我可以做些什么来获得有关 MongoDB 中执行时间毫秒的信息?如果执行时间毫秒总是等于 0,我会遇到一些问题,因为我无法在使用两个不同的 NoSQL DB 的相同查询上显示不同的性能。
【问题讨论】: