Map-Reduce Concurrency

Map 减少操作由许多任务组成,包括从 Importing 集合中读取,执行map函数,执行reduce函数,在处理期间写入临时集合以及写入输出集合。

在操作期间,map-reduce 采取以下锁定:

  • 读取阶段需要读取锁定。每 100 份文档产生一次。

  • 插入到临时集合中将对单个写入执行写锁定。

  • 如果输出集合不存在,则输出集合的创建将具有写锁定。

  • 如果存在输出集合,则输出操作(即mergereplacereduce)将具有写锁定。此写锁定为* global *,并阻止mongod实例上的所有操作。

Note

后处理期间的最终写锁定使结果自动显示。但是,输出动作mergereduce可能要花几分钟才能处理。对于mergereducenonAtomic标志可用,从而释放了写入每个输出文档之间的锁定。有关更多信息,请参见db.collection.mapReduce()参考。