■ 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. 결론
- 동시성 제어와 교착상태 관리는 데이터베이스의 무결성과 안정적인 운영을 위한 핵심 기술 요소로 작용함
- 트랜잭션의 직렬성, 일관성 보장을 위해서는 상황에 맞는 동시성 제어 기법의 선택과 적절한 교착상태 예방 및 회복 전략의 병행이 필수적임
- 시스템 환경, 트랜잭션 특성, 자원 사용 패턴 등을 고려한 전략적 기법 설계가 요구됨
'IT Study > 데이터베이스 및 데이터 처리' 카테고리의 다른 글
🗂️ 정형/비정형 데이터 통합을 위한 데이터 가상화 기술 (1) | 2025.04.13 |
---|---|
🗂️ 정형 vs 반정형 vs 비정형 데이터 분류 및 저장소 설계 (0) | 2025.04.12 |
🗂️ 비관계형 DB 설계 시 고려해야 할 CAP 이론(CAP Theorem) (0) | 2025.04.10 |
🗂️ 트랜잭션 격리 수준(Isolation Level) 4단계와 현상 분석 (0) | 2025.04.09 |
🗂️ ERD(Entity-Relationship Diagram) 작성법과 개체 간 관계 이해 (1) | 2025.04.08 |