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

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

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

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

같이 보기

편집

각주

편집
  1. Phil Bernstein|Philip A. Bernstein, Vassos Hadzilacos, Nathan Goodman (1987): Concurrency Control and Recovery in Database Systems, Addison Wesley Publishing Company, ISBN 0-201-10715-5
  2. Gerhard Weikum, Gottfried Vossen (2001): Transactional Information Systems, Elsevier, ISBN 1-55860-508-8