Control Strategy

잠금은 기다리게 하고, MVCC는 읽을 버전을 분리한다

두 접근은 경쟁 관계가 아니라 조합된다. 일반 읽기는 MVCC로 가볍게, 쓰기 충돌은 잠금과 충돌 감지로 다룬다.

잠금 기반

읽기/쓰기 충돌

읽는 동안 쓰기를 기다리게 하거나, 쓰는 동안 읽기를 제한한다.

장점

충돌을 명시적으로 직렬화한다.

비용

대기, timeout, 데드락 관리가 필요하다.

MVCC

일반 읽기

과거 버전 스냅샷을 읽어 쓰기와 덜 충돌한다.

장점

읽기 위주 워크로드에서 동시성이 높다.

비용

버전 저장, 정리, 쓰기 충돌 감지가 필요하다.

핵심: MVCC는 “락이 없다”가 아니라 “일반 읽기가 쓰기를 덜 막는다”에 가깝다.