我在大约2.4MM记录的集合上运行findAndModify查询,查询中的所有字段都被编入索引,但是命令运行非常不一致,日志显示这需要从<执行0.1到5秒。在过去的4个月中,这种情况运行得相当快,在过去的一周里真的成了一个问题。我正在运行MongoDB 3.0.4
更多细节,这是一个3成员replicaSet,1个主要和2个辅助。 Primary正在运行具有大量可用磁盘空间的wiredTiger,MMAPv1上的辅助磁盘空间。这是写入此集合的唯一进程,并且此数据源的所有客户端都将其读取首选项设置为secondaryPreferred,因此我非常确定这不是流量/负载问题。
html,body {
height:100%;
width:95%;
margin:0 auto;
border: 2px solid red;
}
编辑:getIndexes()
的输出{
"op":"command",
"ns":"stats.$cmd",
"command":{
"findandmodify":"MailingStat",
"query":{
"endTime":{
"$date":"2015-09-17T08:59:59.999+0000"
},
"startTime":{
"$date":"2015-09-17T08:00:00.000+0000"
},
"outlet_id":{
"$oid":"#########"
},
"mailing_id":{
"$oid":"#########"
}
},
"new":false,
"remove":false,
"upsert":true,
"update":{
"$inc":{
"totalSent":1
},
"$set":{
"endTime":{
"$date":"2015-09-17T08:59:59.999+0000"
},
"startTime":{
"$date":"2015-09-17T08:00:00.000+0000"
},
"outlet_id":{
"$oid":"#########"
},
"mailing_id":{
"$oid":"#########"
}
},
"$setOnInsert":{
"__v":0
}
}
},
"updateobj":{
"$inc":{
"totalSent":1
},
"$set":{
"endTime":{
"$date":"2015-09-17T08:59:59.999+0000"
},
"startTime":{
"$date":"2015-09-17T08:00:00.000+0000"
},
"outlet_id":{
"$oid":"#########"
},
"mailing_id":{
"$oid":"#########"
}
},
"$setOnInsert":{
"__v":0
}
},
"nscanned":1,
"nscannedObjects":1,
"nMatched":1,
"nModified":1,
"keyUpdates":0,
"writeConflicts":0,
"numYield":420,
"locks":{
"Global":{
"acquireCount":{
"w":{
"$numberLong":"422"
}
}
},
"Database":{
"acquireCount":{
"w":{
"$numberLong":"422"
}
}
},
"Collection":{
"acquireCount":{
"w":{
"$numberLong":"421"
}
}
},
"oplog":{
"acquireCount":{
"w":{
"$numberLong":"1"
}
}
}
},
"responseLength":308,
"millis":2851,
"execStats":{
},
"ts":{
"$date":"2015-09-21T23:18:30.793+0000"
},
"client":"####",
"allUsers":[
{
"user":"####",
"db":"###"
}
],
"user":"####@$###"
}
编辑:添加了解释(' queryPlanner')
的输出[
{
"v" : NumberInt(1),
"key" : {
"_id" : NumberInt(1)
},
"name" : "_id_",
"ns" : "stats.MailingStat"
},
{
"v" : NumberInt(1),
"key" : {
"mailing_id" : NumberInt(1)
},
"name" : "mailing_id_i",
"ns" : "stats.MailingStat",
"background" : true
},
{
"v" : NumberInt(1),
"key" : {
"outlet_id" : NumberInt(1)
},
"name" : "outlet_id",
"ns" : "stats.MailingStat",
"background" : true
},
{
"v" : NumberInt(1),
"key" : {
"startTime" : NumberInt(1)
},
"name" : "startTime",
"ns" : "stats.MailingStat",
"background" : true
},
{
"v" : NumberInt(1),
"key" : {
"endTime" : NumberInt(1)
},
"name" : "endTime",
"ns" : "stats.MailingStat",
"background" : true
}
]