몽고 v2.2 버전 이전에는 하나의 글로벌 읽기-쓰기 잠금이 있었고, v2.2에서는 데이터베이스 레벨 잠금으로 변경되었고, v3.0의 WiredTiger 스토리지 인젠은 컬렉션 레벨에서 작동하며, 도큐먼트 수준의 잠금 기능을 제공한다.

잠금 최적화를 위해 아래의 최적화가 적용된다.

하나는 도큐먼트가 메모리에 올라와있지 않았을때 읽거나 쓰려는 요청이 들어올 경우, 도큐먼트가 메모리에 페이징 될 때까지 다른 작업을 수행한다.

두번째 최적화는 쓰기 잠금을 양보하는 것이다. 쓰기 연산의 시간이 오래 걸리면 다른 모든 읽기와 쓰기 연산은 원래 쓰기 연산이 완료될 때까지 블록딘다. 모든 삽입/업데이트/삭제 연산은 쓰기 잠금을 수행한다.

그럼에도 불구하고, MongoDB의 잠금은 읽기가 많고 쓰기가 많은 환경에서 성능 영향을 미칠 수 있다.

$isolated

$isolated 라는 특수한 옵션을 사용하면, 해당 연산이 양보되지 못하도록 한다. (어떤 연산이 수행되기 전에 반드시 모든 도큐먼트를 업데이트하거나 삭제해야만 하는 상황 등..)