2단계 로킹 규약
IT위키
더 많은 작업
- Two-Phase Locking Protocol
Lock과 Unlock이 동시에 이루어지면 일관성이 보장되지 않으므로 Lock만 가능한 단계와 Unlock만 가능한 단계를 구분하는 병행 제어 기법
- 직렬가능성을 보장한다.
- 교착상태가 발생할 수 있다.
- Growing Phase
- 새로운 Lock은 가능하고 Unlock은 불가능한 단계
- Shrinking Phase
- Unlock 은 가능하고 새로운 Lock은 불가능한 단계
- Lock Point
- 트랜잭션이 마지막 로크를 얻은 시점, 곧 확장 단계가 끝나고 축소 단계가 시작되는 경계이다
- 트랜잭션이 가진 로크 수가 가장 많은 꼭대기 지점이다. 그래프로 그리면 로크 요청으로 계단처럼 오르다가 첫 로크 해제 직전에 정점에 이른다
- 2단계 로킹을 지킨 스케줄은 로크 포인트 순서대로 트랜잭션을 늘어놓은 직렬 스케줄과 동등하다. 직렬 가능성 증명이 이 점에 기댄다[1]
- 시작 직후 첫 로크를 얻은 시점이나 첫 로크를 해제한 뒤의 시점은 로크 포인트가 아니다
| 규약 | 내용 | 효과 |
|---|---|---|
| 기본 2단계 로킹 | 확장 단계 뒤에 축소 단계 | 직렬 가능성 보장. 교착상태·연쇄 복귀 가능 |
| 엄격한(strict) 2단계 로킹 | 배타 로크를 커밋·철회 때까지 쥔다 | 연쇄 복귀 방지 |
| 엄밀한(rigorous) 2단계 로킹 | 모든 로크를 커밋·철회 때까지 쥔다 | 커밋 순서가 직렬화 순서 |
| 보수적(conservative) 2단계 로킹 | 시작 전에 필요한 로크를 모두 얻는다 | 교착상태 방지 |
- ↑ Silberschatz, Korth, Sudarshan, 「Database System Concepts 7th Edition - Chapter 18: Concurrency Control」 강의 슬라이드, https://www.db-book.com/slides-dir/PDF-dir/ch18.pdf, 확인일: 2026-11-04.
