我在mongodb命令行运行db.currentOp(),返回结果中出现"op" : "getmore",,请问一下getmore是一个什么操作?而且特别耗时:
>db.currentOp() { "inprog" : [ { "opid" : 821006778, "active" : true, "secs_running" : 0, "microsecs_running" : NumberLong(252939), "op" : "getmore", "ns" : "local.oplog.$main", "query" : { }, "client" : "10.171.53.62:34632", "desc" : "conn9912", "threadId" : "0x7f9665e39700", "connectionId" : 9912, "waitingForLock" : false, "numYields" : 0, "lockStats" : { "timeLockedMicros" : { "r" : NumberLong(14), "w" : NumberLong(0) }, "timeAcquiringMicros" : { "r" : NumberLong(1), "w" : NumberLong(0) } } } ] }
getmore是从游标中取数据,遇到问题可以先问谷歌,那么得先学会翻墙……
你的数据越多它花的时间越多,这是正常的。你提供的数据是系统在从oplog中拉数据分发到从结点,看起来是master/slave复制。
oplog表是一个没有索引默认又会比较大的表,所以第一次遍历的时候会花比较长的时间。