db.update_queue.find().explain();
{
"cursor" : "BasicCursor",
"nscanned" : 6046,
"nscannedObjects" : 6046,
"n" : 6046,
"millis" : 5,
"nYields" : 23,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {
}
}
From the net i found out this
:
nYields是查询时间切出的次数。 因此,对于此查询意味着其他查询被允许进行23次。
What does this mean actually ??
这是我对上述
的理解这是否意味着此查询在执行当前查询之前等待23个查询?
答案 0 :(得分:4)
MongoDB的并发功能在最近的版本中更为突出。有一个让步操作的功能,它有RAM中的数据,以换取那些在RAM中有数据的数据。
这意味着MongoDB永远不会空闲排队您的操作,并且通常可以加快操作速度。
nYields
表示此操作有多少次成为MongoDB中的并发算法的牺牲品,因此对于其数据在RAM中的其他操作而言自行消退。
作为修改,请填写文档页面:http://docs.mongodb.org/manual/faq/concurrency/#does-a-read-or-write-operation-ever-yield-the-lock:
长时间运行的读写操作,例如查询,更新和删除,在许多条件下都会产生。在MongoDB 2.0中,操作基于时间片和等待主动锁定的操作数而产生。
然而:
2.2之后,更多自适应算法允许操作基于预测的磁盘访问(即页面错误)而产生。
因此,在不仅仅是错误行为会影响屈服的情况下,我相信这个问题比任何事情都更容易出错。
答案 1 :(得分:0)
文档说:
explain.nYields
nYields是一个数字,它反映了此查询产生读锁定以允许等待写入执行的次数。