MongoDB map是否会在对集合执行操作时减少锁定?
我有一些应用程序广泛和密集使用的集合。 Map / Reduce通过cron作业每10分钟在后台运行一次,广泛且集中使用的集合。
我想知道Map / Reduce是否很有可能无法正常运行,因为其他操作正在进行(插入,更新,主要是读取)。特别是,我想知道Map / Reduce是否会干扰用户对集合执行的正常操作。
答案 0 :(得分:1)
MapReduce,如果输出到集合,则在写入时会占用多个写锁(因为任何创建/更新集合的操作都会)。如果您正在进行内联MR,那么您可以避免锁定(但对结果大小有限制)。即便如此,仍然存在读锁和Javascript锁(现在mongoDB上的服务器端JS的单线程)。
这里有解释(如果有变化,将会更新):
http://www.mongodb.org/display/DOCS/How+does+concurrency+work#Howdoesconcurrencywork-MapReduce
注意:如果多线程是您关心的问题,SpiderMonkey到V8 JS引擎迁移问题是值得关注的问题。