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
 
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号