2단계 로킹(2PL)란?

각 트랜잭션이 락을 걸어 가는 단계와 해제해 가는 단계의 두 단계를 가지며, 일단 락을 해제하기 시작하면 새로운 락을 걸지 않는 동시성 제어 방식. 2단계 로킹 방식이라고도 한다. 직렬 가능성이 보장되지만 데드락은 일어날 수 있다.

일본어 명칭: 2相ロック

2단계 로킹(2PL)은(는) 데이터베이스 기초 등 1개 분야의 연습 문제 1개에 나와요.

분야: 데이터베이스 기초

도전해 보기: 2단계 로킹(2PL) 관련 문제

트랜잭션의 동시성 제어에 사용되는 2단계 로킹 방식에 대한 설명으로 올바른 것은?

  1. A각 트랜잭션은 락을 거는 단계와 해제하는 단계를 몇 번 반복해도 된다. 이로써 데드락이 일어나지 않음이 보장된다
  2. B읽기에는 락을 걸지 않고 쓰기에만 락을 건다. 이로써 더티 리드를 포함한 모든 문제를 막을 수 있다
  3. C각 트랜잭션은 락을 하나라도 해제하면 그 이후에는 새로운 락을 걸지 않는다. 이로써 동시에 실행해도 직렬로 실행한 경우와 같은 결과가 됨이 보장되지만, 데드락은 일어날 수 있다
정답과 해설 보기

정답: C. 각 트랜잭션은 락을 하나라도 해제하면 그 이후에는 새로운 락을 걸지 않는다. 이로써 동시에 실행해도 직렬로 실행한 경우와 같은 결과가 됨이 보장되지만, 데드락은 일어날 수 있다

2단계 로킹 방식(2PL)에서는 각 트랜잭션이 필요한 락을 차례로 걸어 가는 단계(확장 단계)와 락을 해제해 가는 단계(축소 단계)의 두 단계를 가지며, 일단 락을 해제하기 시작하면 새로운 락은 걸지 않습니다. 모든 트랜잭션이 이 규칙을 지키면, 동시에 실행했을 때의 결과가 트랜잭션을 어떤 순서로 하나씩 실행한 경우와 같아지는 것(직렬 가능성)이 보장됩니다. 다만 두 트랜잭션이 서로 상대의 락 해제를 기다리는 데드락은 막을 수 없으므로, DBMS는 데드락을 감지하여 한쪽을 롤백하는 등의 대처를 합니다. 실제로는 커밋할 때까지 배타 락을 해제하지 않는 엄격한 2단계 로킹 방식이 자주 사용되며, 다른 트랜잭션이 커밋되지 않은 데이터를 읽는 것도 막습니다.

해설 속 2단계 로킹(2PL)

2단계 로킹(2PL)이(가) 나오는 문제 (1)

  1. 트랜잭션의 동시성 제어에 사용되는 2단계 로킹 방식에 대한 설명으로 올바른 것은?

관련 용어

트랜잭션(Transaction) 데드락(Deadlock) 격리 수준(Isolation Level) 관계형 데이터베이스(Relational Database) 기본 키(Primary Key) 뷰(View) 외래 키(Foreign Key) 인덱스(Index) 정규화(Normalization) 제3정규형(3NF)

용어집으로 돌아가기