MongoDB MapReduce是否锁定数据库

时间:2011-04-06 08:00:18

标签: mongodb mapreduce

MongoDB MapReduce作业是否会锁定数据库?我正在开发一个多用户MongoDB Web应用程序,我担心多用户冲突和性能。有没有人对我有任何智慧的话语?

3 个答案:

答案 0 :(得分:7)

简单回答?有时......

这很大程度上取决于你如何使用map / reduce ......但根据我的经验,它从来都不是问题。

关于此问题的信息不多,但docs中明确说明有时锁定,但 “允许大量并发操作”。

mongodb-user group asking中有几个关于此问题的问题......我见过offically的最佳答案是......“在1.4中它会产生但不是'尽管它应该很好,在1.5中它对其他请求更友好。“

这并不意味着根本不会阻塞,而是与阻止whole mongod process的db.eval()相比......这是你最好的选择。

那就是说,在1.7.2及更高版本中,db.eval()现在有一个 nolock 选项......

答案 1 :(得分:0)

不,mapreduce不会锁定数据库。请参阅“使用db.eval()”之后的the note here(它解释了为什么mapreduce比eval更适合使用,因为mapreduce不会阻塞)。

如果要运行大量mapreduce作业,则应使用分片,因为这样作业可以在所有分片上并行运行。遗憾的是,mapreduce作业无法在副本集中的辅助副本上运行,因为必须编写结果并且副本是只读的。

答案 2 :(得分:0)

在2.1.0版中,为输出选项添加了“nonAtomic”标志。

请参阅:https://jira.mongodb.org/browse/SERVER-2581