MongoDB中锁的粒度有多精细?

参与6

2同行回答

Luga LeeLuga Lee  系统架构师 , None
V2.2 之前,数据库级别锁,即“全局锁”,V3.0 之后,数据库级别、集合锁等等显示全部

V2.2 之前,数据库级别锁,即“全局锁”,
V3.0 之后,数据库级别、集合锁等等

收起
互联网服务 · 2020-02-25
浏览1826
lxuelxue  数据库管理员 , 某互联网公司
对于 WiredTiger从版本 3.0 开始, MongoDB 附带了 WiredTiger 存储引擎。对于大多数读写操作, WiredTiger 使用乐观并发控制。 WiredTiger 仅在全局,数据库和集合级别使用意图锁。 当存储引擎检测到两个操作之间的冲突时,会发生写入冲突,导致 MongoDB 透明地重试该操作。一些...显示全部

对于 WiredTiger

从版本 3.0 开始, MongoDB 附带了 WiredTiger 存储引擎。

对于大多数读写操作, WiredTiger 使用乐观并发控制。 WiredTiger 仅在全局,数据库和集合级别使用意图锁。 当存储引擎检测到两个操作之间的冲突时,会发生写入冲突,导致 MongoDB 透明地重试该操作。

一些全局操作(通常是涉及多个数据库的短期操作)仍然需要全局“实例范围”锁定。其他一些操作(例如删除集合)仍需要独占数据库锁。

对于 MMAPv1

MMAPv1 存储引擎在 3.0 版本系列中使用了集合级锁定,这是对早期版本的改进,其中数据库锁是最精细的锁。第三方存储引擎可以使用集合级锁定或实现自己的更细粒度的并发控制。

例如,如果使用 MMAPv1 存储引擎在数据库中有六个集合,并且一个操作采用集合级写锁定,则其他五个集合仍可用于读取和写入操作。独占数据库锁使得所有六个集合在持有锁的操作期间不可用。

收起
互联网服务 · 2020-02-26
浏览1799

提问者

yeliye
数据库管理员某农信
擅长领域: 数据库大数据服务器

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2020-02-25
  • 关注会员:3 人
  • 问题浏览:3085
  • 最近回答:2020-02-26
  • X社区推广