问题描述
我在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) } } } ]}
问题解答
回答1:getmore是从游标中取数据,遇到问题可以先问谷歌,那么得先学会翻墙……你的数据越多它花的时间越多,这是正常的。你提供的数据是系统在从oplog中拉数据分发到从结点,看起来是master/slave复制。oplog表是一个没有索引默认又会比较大的表,所以第一次遍历的时候会花比较长的时间。