IT Study/데이터베이스 및 데이터 처리

🗂️ 동시성 제어(Concurrency Control)와 교착상태(Deadlock) 해결 전략

cs_bot 2025. 4. 11. 14:49

■ 1. 동시성 제어 개요

  • 동시성 제어(Concurrency Control)란, 다중 사용자 환경에서 여러 트랜잭션이 동시에 데이터에 접근할 때, 데이터의 일관성과 무결성을 보장하기 위한 제어 기법을 의미함
  • 다중 트랜잭션이 동일 데이터를 동시에 조작할 경우 발생할 수 있는 문제들(갱신 손실, 모순 읽기, 연쇄복귀 등)을 방지하기 위한 필수 메커니즘임
  • 데이터베이스 시스템(DBMS) 내에서 직렬성과 회복 가능성(Recoverability)을 확보하는 핵심 요소로 작용함

■ 2. 동시성 제어의 주요 목적

  • 직렬성(Serializability) 확보: 트랜잭션들의 실행 결과가 어떤 순서로 실행되었든 간에 결과가 직렬적으로 실행한 것과 같도록 보장
  • 일관성 유지: 동시 접근 상황에서도 데이터의 정합성(consistency)을 유지할 수 있도록 함
  • 무결성 보장: 사용자 트랜잭션 간 간섭을 방지하여 데이터 무결성(constraints)이 항상 만족되도록 보장
  • 공정성 확보: 특정 트랜잭션이 과도하게 지연되지 않도록 제어하는 공정한 접근 보장

■ 3. 동시성 제어 기법

로킹 기반(Locking-Based) 기법

  • 트랜잭션이 자원을 사용하기 전 잠금(Lock)을 설정하여 다른 트랜잭션의 접근을 제한
  • 2단계 잠금 규약(Two Phase Locking, 2PL)을 통해 직렬성 보장
     ㆍ획득 단계(Growing Phase): 필요한 모든 Lock을 획득
     ㆍ해제 단계(Shrinking Phase): Lock 해제만 수행하며 추가 Lock 획득 불가
  • S-Lock(공유 잠금)과 X-Lock(배타 잠금)의 구분을 통해 읽기-쓰기 동시성 허용

타임스탬프 기반(Timestamp-Based) 기법

  • 각 트랜잭션에 타임스탬프를 부여하고, 트랜잭션의 순서를 이 타임스탬프에 따라 결정
  • 충돌 발생 시 트랜잭션 재시도 또는 중단을 통해 직렬성 확보
  • Thomas’s Write Rule, Read/Write Timestamp Rule 등이 적용됨

낙관적 제어 기법(Optimistic Concurrency Control)

  • 트랜잭션 간 충돌이 거의 없다는 전제하에, 트랜잭션 완료 시 충돌 여부를 검사하여 커밋 여부 결정
  • Read Phase, Validation Phase, Write Phase 세 단계로 구성
  • 동시성이 높고 충돌이 적은 시스템에 적합

다중 버전 기법(MVCC: Multi-Version Concurrency Control)

  • 데이터 객체에 대한 여러 버전을 관리하여 읽기 작업과 쓰기 작업의 충돌을 최소화
  • PostgreSQL, Oracle 등에서 활용됨
  • 읽기 트랜잭션은 자신의 타임스탬프 기준의 버전만 접근하며, 다른 트랜잭션의 쓰기와 충돌하지 않음

■ 4. 교착상태(Deadlock) 개요

  • 두 개 이상의 트랜잭션이 서로 자원을 점유하고 있으며, 상대 트랜잭션이 가진 자원을 기다리며 무한 대기하는 상태를 의미함
  • 일반적으로 Lock 기반의 동시성 제어 기법에서 발생하며, 자원 획득 순서가 잘못될 경우 발생함
  • 교착상태 발생 시 시스템 자원이 묶이게 되어 전체 트랜잭션 처리 성능 저하 초래

■ 5. 교착상태 발생 조건 (Coffman 조건)

상호 배제(Mutual Exclusion): 자원은 한 번에 하나의 트랜잭션만 점유 가능
점유와 대기(Hold and Wait): 자원을 점유한 상태에서 다른 자원의 점유를 기다림
비선점(No Preemption): 이미 할당된 자원을 강제로 회수할 수 없음
순환 대기(Circular Wait): 트랜잭션 간에 순환적으로 자원을 대기하는 형태 존재

→ 위 4가지 조건이 모두 만족될 경우 교착상태 발생 가능


■ 6. 교착상태 해결 전략

예방(Prevention)

  • Coffman 조건 중 하나 이상을 사전에 제거하여 교착상태 발생 자체를 원천 차단
     ㆍ자원 선점 허용(조건 3 제거)
     ㆍ자원 할당 시 일괄 요청(조건 2 제거)
     ㆍ트랜잭션에 우선순위 부여 및 우선순위 역전 방지

회피(Avoidance)

  • 시스템 상태를 지속적으로 모니터링하며, 교착상태 발생 가능성이 있는 자원 요청 거부
  • 대표 알고리즘: 은행가 알고리즘(Banker's Algorithm)
     ㆍ안전 상태(Safe State)를 유지하는 방향으로만 자원 할당 수행
     ㆍ안전하지 않은 상태로의 전이 차단

탐지(Detection)

  • 교착상태가 발생할 수 있음을 인정하고, 주기적으로 Wait-for Graph를 점검하여 사이클 탐지
  • 교착 상태가 탐지되면 해당 트랜잭션 중 하나 이상을 강제로 중단(Kill)하여 회복

회복(Recovery)

  • 교착상태 발생 시 피해를 최소화하는 방향으로 트랜잭션 중단 또는 자원 회수
  • 피해 최소화를 위한 희생 트랜잭션 선정 기준
     ㆍ롤백 비용이 적은 트랜잭션
     ㆍ우선순위가 낮은 트랜잭션
     ㆍ진행률이 낮은 트랜잭션

■ 7. 동시성 제어 및 교착상태 해결 전략 비교

항목 동시성 제어 기법 교착상태 해결 전략
목적 일관성/직렬성 보장 무한 대기 상태 방지 및 회복
적용 시점 트랜잭션 수행 중 교착상태 발생 전/후
주된 기술 방식 Lock, Timestamp, MVCC 등 예방, 회피, 탐지, 회복
대표 알고리즘 2PL, 타임스탬프 순서화 Wait-for Graph, Banker's
성능 영향 동시성 저하 가능성 존재 트랜잭션 중단 비용 발생 가능

■ 8. 결론

  • 동시성 제어와 교착상태 관리는 데이터베이스의 무결성과 안정적인 운영을 위한 핵심 기술 요소로 작용함
  • 트랜잭션의 직렬성, 일관성 보장을 위해서는 상황에 맞는 동시성 제어 기법의 선택과 적절한 교착상태 예방 및 회복 전략의 병행이 필수적임
  • 시스템 환경, 트랜잭션 특성, 자원 사용 패턴 등을 고려한 전략적 기법 설계가 요구됨