【发布时间】:2013-07-01 15:43:50
【问题描述】:
在 mongodb 文档中,它说:
从 2.2 版开始,MongoDB 为大多数读写操作在每个数据库的基础上实现锁。一些全局操作,通常是涉及多个数据库的短期操作,仍然需要全局“实例”范围的锁。在 2.2 之前,每个 mongod 实例只有一个“全局”锁。
这是否意味着在我有 3 个从网络上运行的不同应用程序到 mongodb://localhost/test 的连接的情况下 - 一次只能写入一个?还是只是每个连接?
IOW:是每个连接,还是整个 /test 数据库在写入时被锁定?
【问题讨论】:
-
从 MongoDB 3.0 开始,WiredTiger 存储引擎在 64 位版本中可用。 WiredTiger 使用文档级并发控制进行写入操作。因此,多个客户端可以同时修改一个集合的不同文档。 docs.mongodb.com/manual/core/wiredtiger/…
-
在MongoDB v4.4 Manual's FAQ: Concurrency中有关于锁和并发相关话题的简要解答:MongoDB使用什么类型的锁?锁的粒度如何?如何查看 mongod 实例上的锁状态?读或写操作是否会产生锁?一些常见的客户端操作使用了哪些锁?哪些管理命令会锁定数据库或集合? MongoDB 操作是否会锁定多个数据库?分片和副本集如何影响并发? MongoDB 支持事务吗?
标签: mongodb concurrency locking