지난 포스팅에서는 Lock의 기본 개념과 종류, 그리고 lock을 사용해도 Nonserializable이 될 수 있다는 문제를 살펴봤다. 이번 포스팅에서는 이를 해결하는 2PL 프로토콜과 그 변형들, 그리고 MVCC까지 이어서 정리한다.1. 2PL 프로토콜 (Two-Phase Locking)2PL 프로토콜(Two-Phase Locking Protocol, 2단계 잠금 프로토콜)은 lock을 사용해도 직렬화가 보장되지 않는 문제를 해결하기 위한 규약이다. 핵심 규칙은 다음과 같다.트랜잭션에서 모든 locking operation이 최초의 unlock operation보다 먼저 수행되어야 한다.즉, lock을 취득하는 단계와 반환하는 단계를 엄격히 분리한다.Expanding phase (Growing pha..