MongoDB如何处理并发更新?

时间:2011-08-09 14:31:04

标签: mongodb mongodb-.net-driver

到目前为止,我开始在工作中使用MongoDB。 我想知道MongoDB如何处理并发更新? 我已经读过MongoDB中没有锁定功能所以我想知道处理这个问题的常用做法是什么。

感谢。

2 个答案:

答案 0 :(得分:29)

MongoDB使用进程范围的写锁定来保证一次只能执行一次写操作(更新/插入/删除)。因此,它自动解决并发问题,因为不允许写并发。

如果4个线程尝试更新操作,则其中一个线程将执行写锁定,执行更新并释放锁定。之后剩下的3个中的一个将抓住锁,进行更新等等。

如果您的操作无法包含在单个写入操作中,则并发性才会发挥作用。请注意,对于最常见的用例(查找文档,更新它并以原子方式获取新版本),MongoDB提供了“findAndModify”命令,它只执行以下操作:http://www.mongodb.org/display/DOCS/findAndModify+Command

更新:锁定现在更精细。

答案 1 :(得分:6)

使用modifier operations

$inc $set $unset $push $pushAll $addToSet $pop $pull $pullAll $rename $bit

所有这些都是原子的。