Mongo 锁的理解
MongoDB 提供多粒度锁
Global (MongoD 实例) – 所有的数据库上加锁
Database – 锁定某个数据库
Collection – 锁定某个集合
Document – 锁定某个文档
MongoDB 提供了四种锁
- 意向共享锁(IS)表示事务意图在表中的单个行上设置共享锁。
- 意向排他锁(IX)表明事务意图在表中的单个行上设置独占锁。
- S 共享锁
- X 排它锁
意向锁有什么作用?
mongo的资源层级结构:Global ->DB -> Collection -> Doc
意向锁加在高层级的,当需要对Doc1加X锁,需要对DB和Collection加IX,IX,此时如果对Doc2加X锁,就需要获取DB和Collection的IX锁,IX是可以被多个事务获取的,再获取Doc2的X锁,这样就实现了并发修改,此时如果foreground创建索引(库级别的写锁),那个DB的IX锁如果没有释放完,是无法无获取DB的X锁的。
意向锁为了高层级资源的隔离。
Mongo锁直接的隔离关系
IS | IX | S | X | |
IS | yes | yes | yes | no |
IX | yes | yes | no | no |
S | yes | no | yes | no |
X | no | no | no | no |
本文来自博客园,作者:LeeJuly,转载请注明原文链接:https://www.cnblogs.com/peterleee/p/13438793.html