到目前为止,我开始在工作中使用MongoDB。 我想知道MongoDB如何处理并发更新? 我已经读过MongoDB中没有锁定功能所以我想知道处理这个问题的常用做法是什么。
感谢。
答案 0 :(得分:29)
MongoDB使用进程范围的写锁定来保证一次只能执行一次写操作(更新/插入/删除)。因此,它自动解决并发问题,因为不允许写并发。
如果4个线程尝试更新操作,则其中一个线程将执行写锁定,执行更新并释放锁定。之后剩下的3个中的一个将抓住锁,进行更新等等。
如果您的操作无法包含在单个写入操作中,则并发性才会发挥作用。请注意,对于最常见的用例(查找文档,更新它并以原子方式获取新版本),MongoDB提供了“findAndModify”命令,它只执行以下操作:http://www.mongodb.org/display/DOCS/findAndModify+Command
更新:锁定现在更精细。
答案 1 :(得分:6)
$inc $set $unset $push $pushAll $addToSet $pop $pull $pullAll $rename $bit
所有这些都是原子的。