Map-Reduce 并发

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

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

    • 读取阶段采用读锁定。它产生每 100 个文件。

    • insert 进入临时集合会为单次写入执行写锁定。

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

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

      注意

      后处理期间的最终写锁定使结果自动显示。然而,输出操作mergereduce可能需要时间来处理。对于mergereduce,该 nonAtomic标志可用,从而释放写入每个输出文档之间的锁定。从MongoDB 4.2开始,不推荐使用nonAtomic: false显式设置。有关db.collection.mapReduce()更多信息,请参见参考。

    译者:李冠飞

    校对:

    参见

    原文 - Map-Reduce Concurrency