wiredtiger存储引擎是文档级别的并发,多个客户端能同时操作一个集合中的不通的文档。
对于大多数的读写操作,wiredtiger使用乐观锁的并发控制,在global,database collection级别使用意向锁,当存储引擎检测到两个操作冲突时候,mongodb会透明的对导致写冲突的操作进行重试。
一些全局的操作,例如一些包含多个数据库的短期操作,仍然会需要全局的实例级别锁,一些其他操作,比如删除集合,需要一个排他的数据库锁。
快照和检查点
wiredtiger提供mvcc,在操作的开始,wiredtiger提供一个基于时间点的快照,快照提供内存中数据的一致性视图。

写入磁盘时,WiredTiger将所有数据文件中的快照中的所有数据以一致的方式写入磁盘。 现在持久的数据充当数据文件中的检查点。 该检查点可确保数据文件直到最后一个检查点(包括最后一个检查点)都保持一致; 即检查点可以充当恢复点。
wiredtiger中是间隔60s,或产生2g的journal data数据产生一个检查点。
在写一个新检查点的时候,之前的检查点仍然有效,这样在写入新检查点的时候,如果mongodb遇到问题,在重启的时候会恢复到最近一个有效的检查点。

当WiredTiger的元数据表被原子更新以引用新的检查点时,新的检查点将变为可访问且永久的。 一旦可以访问新的检查点,WiredTiger就会从旧的检查点释放页面。
即便不实用jounaling,mongodb也能恢复到最近的检查点,然后为了恢复最近检查点以后的改变,仍然需要运行journaling.