How does MongoDB deal with concurrent updates?

后端 未结 2 972
太阳男子
太阳男子 2020-11-27 07:12

I started to use MongoDB at work so far so good. I was wondering though how does MongoDB deal with concurrent updates ? I\'ve read that there is no locking feature in MongoD

相关标签:
2条回答
  • 2020-11-27 07:17

    MongoDB used a process wide write lock to guarantee that only one write operation (update/insert/remove) can be performed at a time. As such it automatically solves concurrency issues since write concurrency simply isn't allowed.

    If 4 threads attempt an update operation one of them will take the write lock, do its update and release the lock. After that one of the remaining 3 will grab the lock, do its update, etc.

    Concurrency only comes into play if your operation cannot be wrapped in a single write operation. Note that for the most common usecase (find a doc, update it and grab the new version atomically) MongoDB offers the "findAndModify" command which does just that : http://www.mongodb.org/display/DOCS/findAndModify+Command

    UPDATE : Locking is more granular these days.

    0 讨论(0)
  • 2020-11-27 07:23

    Use modifier operations:

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

    all of them are atomic.

    0 讨论(0)
提交回复
热议问题