공부/DB
전통 락킹(2PL) vs MVCC :동시성 제어 방식 비교
youngble
2025. 11. 19. 01:36
현재 읽고있는 데이터베이스 개론 3판 읽으며 동시성제어에 관한 짤막한 정리해놓기
요약표(2PL vs MVCC)

2PL(2-Phase Locking)
2PL 전통방식으로 read, write 모두 lock을 가짐, read는 S-lock(공유락), writ는 X-lock(배타락)
S-lock은 read와 read끼리는 공유가능하여 트랜잭션중에도 해당 데이터에 대한 접근 가능.
하지만 read시에 Write불가하여 X-lock을 얻기위해 read가 끝나도로 기다려야하고, 반대로 write시에도 read할수없도록 하기위해 X-lock이 반납되어 S-lock을 얻을때까지 기다려야한다.
S: Shared 공유, X: Exclusive 배타적
MVCC(Multi-Version Concurrency Control, 다중버전 동시성 제어)
하지만 현대의 DBMS에 오면서 Read시에는 굳이 로킹기법(2PL)을 적용하면 병렬성이 낮아진다는 단점이있어 Read시에는 락을 걸지않고 Write시에만 부분적으로 락을 걸도록 바뀐게 MVCC이다.
read시에는 락을 사용하지않기때문에 read 트랜잭션을 원할시 항상 스냅샷 값(이전값)만 가져오도록하고, write일시 write끼리 서로 접근할수없도록 X-lock을 사용하는것이다. 이렇게함으로써 데이터베이스의 일관성은 보장하면서도 병렬성을 높여 동시성을 높일수있다.