MongoDB - 如何锁定Map Reduce?

时间:2012-03-26 10:29:46

标签: mongodb cron mapreduce

MongoDB map是否会在对集合执行操作时减少锁定?

我有一些应用程序广泛和密集使用的集合。 Map / Reduce通过cron作业每10分钟在后台运行一次,广泛且集中使用的集合。

我想知道Map / Reduce是否很有可能无法正常运行,因为其他操作正在进行(插入,更新,主要是读取)。特别是,我想知道Map / Reduce是否会干扰用户对集合执行的正常操作。

1 个答案:

答案 0 :(得分:1)

MapReduce,如果输出到集合,则在写入时会占用多个写锁(因为任何创建/更新集合的操作都会)。如果您正在进行内联MR,那么您可以避免锁定(但对结果大小有限制)。即便如此,仍然存在读锁和Javascript锁(现在mongoDB上的服务器端JS的单线程)。

这里有解释(如果有变化,将会更新):

http://www.mongodb.org/display/DOCS/How+does+concurrency+work#Howdoesconcurrencywork-MapReduce

注意:如果多线程是您关心的问题,SpiderMonkey到V8 JS引擎迁移问题是值得关注的问题。