我正在尝试测量MongoDB中的查询运行时间。
步骤: 我在mongoDB中设置了分析并运行了我的查询 当我确实显示Profile时,我得到了以下输出。
db.blogpost.find({post:/.* NATO .*/i})
blogpost
是集合名称,我在查询中搜索了“NATO”关键字。
输出:它取出了20条记录,在运行查询以获得执行结果后,我得到了以下输出:
在输出中,我可以看到3个时间值,其中一个与MySQL中的持续时间相似?
query blogtrackernosql.blogpost **472ms** Wed Apr 11 2018 20:37:54
command:{
"find" : "blogpost",
"filter" : {
"post" : /.* NATO .*/i
},
"$db" : "blogtrackernosql"
} cursorid:99983342073 keysExamined:0 docsExamined:1122 numYield:19 locks:{
"Global" : {
"acquireCount" : {
"r" : NumberLong(40)
}
},
"Database" : {
"acquireCount" : {
"r" : NumberLong(20)
}
},
"Collection" : {
"acquireCount" : {
"r" : NumberLong(20)
}
}
} nreturned:101 responseLength:723471 protocol:op_msg planSummary:COLLSCAN
execStats:{
**"stage"** : "COLLSCAN",
"filter" : {
"post" : {
"$regex" : ".* NATO .*",
"$options" : "i"
}
},
"nReturned" : 101,
**"executionTimeMillisEstimate" : 422**,
"works" : 1123,
"advanced" : 101,
"needTime" : 1022,
"needYield" : 0,
"saveState" : 20,
"restoreState" : 19,
"isEOF" : 0,
"invalidates" : 0,
"direction" : "forward",
"docsExamined" : 1122
} client:127.0.0.1 appName:MongoDB Shell allUsers:[ ] user:
答案 0 :(得分:0)
这......
NSNotificationCenter.defaultCenter().addObserver(self, selector:"checkForReachability:", name: ReachabilityChangedNotification, object: nil);
self.reachability = Reachability.reachabilityForInternetConnection();
self.reachability.startNotifier();
func checkForReachability(notification:NSNotification)
{
let networkReachability = notification.object as Reachability;
var remoteHostStatus = networkReachability.currentReachabilityStatus()
if (remoteHostStatus.value == NotReachable.value)
{
print("Not Reachable")
}
else if (remoteHostStatus.value == ReachableViaWiFi.value)
{
print("Reachable via Wifi")
}
else
{
print("Reachable")
}
}
...是MongoDB的估计该查询在MongoDB服务器上执行所需的时间。
这......
"executionTimeMillisEstimate" : 422
...必须是端到端的时间,包括一些客户端部分(例如,形成查询并将其发送到MongoDB服务器)以及从MongoDB服务器返回到客户端的数据传输时间。
所以:
注意:输出还告诉您MongoDB必须扫描整个集合(query blogtrackernosql.blogpost 472ms
)才能执行此查询。 FWIW,它必须扫描集合的原因是你使用不区分大小写的"stage": "COLLSCAN"
。根据{{3}}:
不区分大小写的正则表达式查询通常无法有效地使用索引。