2단계 로킹 또는 2단계 잠금(Two-phase locking, 2PL)은 데이터베이스트랜잭션 처리에서 직렬성을 보장하는 동시성 제어 방법이다. 이는 데이터베이스 트랜잭션 스케줄(기록)의 결과 집합 이름이기도 하다. 프로토콜은 트랜잭션에 의해 데이터에 적용되는 잠금을 사용한다. 이는 트랜잭션 수명 동안 다른 트랜잭션이 동일한 데이터에 액세스하는 것을 차단(중지하라는 신호로 해석)할 수 있다.

2PL 프로토콜에 따라 잠금은 두 단계로 적용 및 제거된다.

  1. 확장 단계: 잠금이 획득되고 잠금이 해제되지 않는다.
  2. 축소 단계: 잠금이 해제되고 잠금이 획득되지 않는다.

기본 프로토콜에서는 공유 잠금과 배타적 잠금이라는 두 가지 유형의 잠금을 사용한다. 기본 프로토콜을 개선하면 더 많은 잠금 유형을 사용할 수 있다. 프로세스를 차단하는 잠금을 사용하면 2PL은 두 개 이상의 트랜잭션이 상호 차단되어 교착 상태가 발생할 수 있다.

같이 보기 편집