토픽 50 / 201·무결성 및 트랜잭션
교착상태 (Deadlock)
교착상태 (Deadlock)
두 개 이상의 트랜잭션이 서로가 보유한 잠금(Lock)을 기다리며 영원히 진행할 수 없는 상태
특징: 시스템 교착(Stall), 자동/수동 탐지 및 해결 필요, 4가지 필요 조건 동시 충족 시 발생
- •상호 배제(Mutual Exclusion): 자원의 배타적 사용
- •점유와 대기(Hold and Wait): 잠금 보유 상태에서 추가 잠금 대기
- •비선점(No Preemption): 강제로 잠금 회수 불가
- •환형 대기(Circular Wait): 트랜잭션 간 대기 순환 형성
해결 기법
- •예방(Prevention): 접근 순서 고정, 한번에 모든 잠금 획득
- •회피(Avoidance): Wait-Die, Wound-Wait 알고리즘
- •탐지(Detection): Wait-for Graph에서 순환 탐지, 희생자 선정 후 롤백
- •타임아웃(Timeout): 일정 시간 초과 시 자동 롤백
적용사례: 동시 업데이트, 복잡한 다중 테이블 트랜잭션
비교: 예방(접근순서고정/오버헤드) vs 탐지(그래프분석/사후처리) vs 타임아웃(간단/정확도낮음)
연관: 락킹, 동시성 제어, 트랜잭션, Wait-for Graph