TWO PHASE LOCK
-
2PC(TWO PHASE COMMIT)
과 헷갈리는 개념이 있다. 그것은 바로2PL(TWO PHASE LOCK)
이다. -
2단계 잠금 프로토콜은 트랜잭션 도줌에 락을 걸어서 동일한 데이터에 동시에 접근하려는 트랜잭션을 차단하여 직렬화를 보장하는
DBMS
의 동시 제어 방법이다. -
DBMS
의 동시성 문제를 해결하는데 도움이 된다. -
이 잠금 프로토콜은 트랜잭션의 실행 단계를 세 단계로 나눈다.
-
첫 번째 단계에서는 트랜잭션이 실행되기 시작할 때 필요한 락에 대한 권한을 요청한다.
-
두 번째 부분은 트랜잭션이 모든 락 권한을 얻는 부분이다. 트랜잭션이 첫 번째 락을 해제할 때 세번째 단계가 실행된다.
-
이 세 번째 단계에서는 트랜잭션이 새로운 락을 요청할 수 없으며, 대신 획득한 락을 해제할 수 만 있다.
-
-
따라서
2PL
에서는 각 트랜잭션이 두 단계로 락 획득 또는 해제 요청을 할 수 있다.- Growing Phase: 이 단계에서는 오직 잠금을 획득할 수 있고, 해제할 수는 없다.
- Shrinking Phase: 이 단계에서는 트랜잭션이 잠금을 해제할 수는 있지만 새로운 잠금을 획득하지는 못한다.
-
2PL
프로토콜 방식은 직렬화는 보장하지만, 교착 상태가 발생하지 않도록 보장하지 못한다는 특징이 있다.