확장 단계
필요한 자원에 대한 락을 모으는 구간입니다. 아직 아무 락도 풀지 않습니다.
가능
S(A), X(B)처럼 새 락 획득금지보유한 락을 먼저 해제하기
2PL은 트랜잭션의 잠금 흐름을 확장 단계와 축소 단계로 분리합니다. 한 번 해제를 시작한 뒤에는 새 락을 다시 잡지 못하므로, 충돌 순서가 뒤집히지 않고 직렬 가능한 실행 순서를 만들 수 있습니다.
필요한 자원에 대한 락을 모으는 구간입니다. 아직 아무 락도 풀지 않습니다.
S(A), X(B)처럼 새 락 획득이 시점에 필요한 락을 모두 확보했습니다. 이제부터 잠금 집합은 더 커질 수 없습니다.
lock() 호출이 끝난 경계작업이 끝난 락을 순서대로 풀어 가는 구간입니다. 이제 새 락은 다시 잡을 수 없습니다.
unlock(B), unlock(A)로 해제잠금이 증가하다가 한 번만 감소하므로, 트랜잭션 사이의 충돌 순서가 중간에 뒤집히지 않습니다. 그래서 2PL을 따르면 충돌 직렬 가능성을 만족합니다.
각 트랜잭션이 확장 단계에서 락을 모으는 동안 서로의 락을 기다릴 수 있으므로, 데드락은 여전히 발생할 수 있습니다.