Vip*_*pul 8 concurrency mongodb
我是MongoDB数据库的新手,我的一个应用程序计划将其中一部分迁移到MongoDB.我们需要处理乐观并发的地方.MongoDB提供的最佳实践是什么?
MongoDB是否适合需要并发的应用程序?
Cle*_*ath 13
是MongoDB是并发的正确选择.
MongoDB锁定与RDBMS中的锁定不同.
MongoDB使用多粒度锁定(请参阅有线老虎),允许操作锁定全局,数据库或集合级别,并允许各个存储引擎在集合级别下实现自己的并发控制(例如,在文档级别) WiredTiger).
MongoDB使用读写器锁定,允许并发读取器共享访问资源(如数据库或集合),但在MMAPv1中,可以对单个写入操作进行独占访问.
WiredTiger使用乐观并发控制.WiredTiger仅在全局,数据库和集合级别使用意图锁.当存储引擎检测到两个操作之间的冲突时,会发生写入冲突,导致MongoDB透明地重试该操作.
MongoDB为每个数据库都有一个读/写锁存器.
锁存器是多读取器,单写入器,并且它是编写器贪婪的,因此我们可以在数据库上具有无限数量的同时读取器,但是在任何一个数据库中的任何集合上一次只能有一个写入器.
"writer-greedy"优先写入,因此当我们收到写入请求时,所有读取请求都会被阻止,直到写入完成为止.
这里的锁被称为锁存器,因为它比锁更轻,它在几微秒内执行工作.
MongoDB能够运行多个同步查询.
希望能帮助到你!!
参考
https://docs.mongodb.com/manual/faq/concurrency/
https://docs.mongodb.com/manual/reference/command/findAndModify/
| 归档时间: |
|
| 查看次数: |
10066 次 |
| 最近记录: |