Map-Reduce 并发
注意
聚合管道作为 Map-Reduce 的替代方案
从 MongoDB 5.0 开始,map-reduce 已弃用
而不是使用map-reduce,你应该使用一个聚合管道。聚合管道比map-reduce提供更好的性能和可用性。
对于需要自定义功能的map-reduce操作,你可以使用
$accumulator
和$function
聚合操作符。你可以使用这些操作符在JavaScript中定义自定义聚合表达式。
有关聚合管道代替map-reduce的示例,请参阅
map-reduce操作由许多任务组成,包括从输入集合读取、执行map
函数、执行reduce
函数、在处理期间写入临时集合以及写入输出集合。
在此操作过程中,map-reduce采取以下锁
读取阶段采取读锁。每100个文档释放一次。
向临时集合插入操作采取单个写入的写锁。
如果输出集合不存在,则创建输出集合采取写锁。
如果输出集合存在,则输出操作(即
merge
、replace
、reduce
)采取写锁。这个写锁是全局的,阻止了所有对mongod
实例的操作。