Learning
토픽 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