MMAP1存储引擎:
collection锁(collection-level concurrency control),在MMAP版本中,只提供了database的锁(既当一个用户对一个collection进行操作时,其他的collection也被挂起)
WiredTiger存储引擎:
在 2.2 版本以前,mongod 只有全局锁;在 2.2 版本开始,大部分读写操作只锁一个库,相对之前版本,这个粒度已经下降,例如如果一个 mongod 实例上有 5 个库,如果只对一个库中的一个集合执行写操作,那么在写操作过程中,这个库被锁;而其它 5 个库不影响。相比 RDBMS 来说,这个粒度已经算很大了!
3.0开始有了WireTiger存储引擎,但是默认还是mmapv1, 3.2以后默认是wireTiger存储引擎
1、全局锁
锁住整个实例,如果一个实例有五个数据库,那么同时会锁住五个数据库
Version < 2.2 : 只支持进程级锁,一个Mongod实例一个锁。
2、数据库锁
锁住整个数据库
2.8 >Version >= 2.2 : 支持库级锁,一个db一把锁。
3、collection锁
文档锁,锁住整个document,也就是表级锁
目前3.0.0 支持 collection 级别的锁。