MongoDB 使用哪种类型的锁定?
除了用于读取的共享 (S) 锁定模式和用于写入操作的独占 (X) 锁定模式之外,意图共享 (IS) 和意图独占 (IX) 模式表示使用更细粒度的锁来读取或写入资源的意图。按一定粒度锁定时,所有更高级别都使用意向锁
例如,当锁定一个集合进行写入(使用模式 X)时,相应的数据库锁和全局锁都必须以意向独占 (IX) 模式锁定。单个数据库可以同时以 IS 和 IX 模式锁定,但独占 (X) 锁不能与任何其他模式共存,共享 (S) 锁只能与意向共享 (IS) 锁共存。
锁是公平的,读取和写入的锁请求都会按顺序排队。然而,为了优化吞吐量,批准一个锁请求时,也会同时批准所有其他兼容的锁请求,这可能会导致在执行冲突的锁请求之前释放锁。例如,当一个 X 锁刚被释放并且冲突队列包含这些锁:
IS → IS → X → X → S → IS
某些常见客户端操作会采用哪些锁?
下表列出一些操作及其为文档级锁定存储引擎使用的锁类型:
操作 | Database | Collection |
---|---|---|
发出查询 |
r (意向共享)
|
r (意向共享)
|
Insert data |
w (意向独占)
|
w (意向独占)
|
删除数据 |
w (意向独占)
|
w (意向独占)
|
Update data |
w (意向独占)
|
w (意向独占)
|
执行聚合 |
r (意向共享)
|
r (意向共享)
|
创建索引(前景) |
W (独占)
|
|
创建索引(背景) |
w (意向独占)
|
w (意向独占)
|
listCollections |
r (意向共享)
|
|
map-reduce |
W (独占)和 R (共享)
|
w (意向独占)和 r (意向共享)
|
标签:mongo,独占,写入,模式,并发,共享,锁定,意向 From: https://www.cnblogs.com/wonchaofan/p/18309404