我在工作中开始使用MongoDB,目前为止一切都很好。然而,我想知道MongoDB如何处理并发更新?我已经阅读过MongoDB没有锁定功能的相关信息,所以我想知道一般处理这个问题的常见做法是什么。
谢谢。
我在工作中开始使用MongoDB,目前为止一切都很好。然而,我想知道MongoDB如何处理并发更新?我已经阅读过MongoDB没有锁定功能的相关信息,所以我想知道一般处理这个问题的常见做法是什么。
谢谢。
MongoDB使用进程级别的写锁来保证同一时间只能执行一个写入操作(更新/插入/删除)。因此,它自动解决了并发问题,因为不允许写入并发。
如果4个线程尝试进行更新操作,其中一个将获取写锁,完成其更新并释放锁。然后剩下的3个线程中的另一个将获取锁并继续其更新操作,以此类推。
仅当您的操作无法包装在单个写入操作中时,并发才会发挥作用。请注意,在最常见的用例(查找文档、更新文档并原子地抓取新版本)中,MongoDB提供了“findAndModify”命令,该命令正是针对此目的而设计的:http://www.mongodb.org/display/DOCS/findAndModify+Command
更新:现在锁定更加细粒度化。