저장소 logo 저장소

1. 데드락 (교착 상태)

데드락.
여러 Transaction이 서로가 보유한 자원의 Lock 해제를 기다리며 무한 대기 상태에 빠지는 현상.

데이터베이스에서는 Transaction이 데이터 변경 시 Lock을 사용하여 데이터 무결성을 보장하는 구조.
이 과정에서 서로의 자원을 기다리는 순환 대기 상태(Circular Wait) 발생 가능.

이러한 상황을 데드락(교착 상태)이라고 함.


2. 데드락 발생 상황

두 Transaction이 서로 다른 자원을 점유한 상태에서 상대방 자원을 기다리는 상황.

예시 흐름

  1. Transaction A → 데이터 X Lock 획득
  2. Transaction B → 데이터 Y Lock 획득
  3. Transaction A → Y 접근 대기
  4. Transaction B → X 접근 대기

두 Transaction 모두 상대방 Lock 해제를 기다리게 되면서
작업이 영원히 진행되지 않는 상태 발생.


3. 데드락 해결 방법

데드락 해결 방식은 크게 세 가지 방식 존재.

예방 (Prevention)

데드락 발생 조건을 사전에 제거하는 방식.

방법

단점


회피 (Avoidance)

자원 할당 시 데드락 발생 가능성을 판단하여 회피하는 방식.

대표적인 방법

특징


탐지 및 회복 (Detection & Recovery)

데드락 발생을 허용한 후 발생 여부를 감지하고 해결하는 방식.

동작 과정

  1. 데드락 발생 여부 탐지
  2. 데드락 발견 시 Transaction 하나 Rollback
  3. Lock 해제 후 다른 Transaction 진행

대부분의 DBMS에서 사용하는 방식.


4. 데드락 발생 조건

Deadlock은 다음 네 가지 조건이 동시에 만족할 때 발생.

조건 설명
Mutual Exclusion 자원을 동시에 하나의 Transaction만 사용
Hold and Wait 자원을 점유한 상태에서 다른 자원 대기
No Preemption 자원을 강제로 회수할 수 없음
Circular Wait Transaction 간 순환 대기 발생

핵심 정리

데드락

  • Transaction 간 Lock 충돌로 인해 서로 자원을 기다리는 상태
  • 순환 대기(Circular Wait) 상황에서 발생

해결 방법

  • 예방 (Prevention)
  • 회피 (Avoidance)
  • 탐지 및 회복 (Detection & Recovery)

« Transaction
Index »