Concurrency and Recovery (동시성 제어 및 복구) 개요
- DBMS는 장애(Failures) 발생 시 데이터의 올바름(Correctness)을 재확립해야 함
- 시스템은 장애 후 올바른 상태로 복원(Recovery)되어야 함
- DBMS는 여러 클라이언트가 동시에 데이터베이스에 접근할 수 있도록 지원해야 함
- 다른 클라이언트들의 연산이 교차 실행(Interleaving)되면서 데이터의 정확성에 문제가 발생할 수 있으므로, 시스템은 **동시성 제어(Concurrency control)**를 통해 데이터의 일관성을 보장해야 함
Crash Recovery (장애 복구)와 Failure (장애) 분류
- Crash Recovery 알고리즘
- 장애에도 불구하고 데이터베이스의 일관성(Consistency), 트랜잭션의 원자성(Atomicity), 지속성(Durability)을 보장하기 위한 기술임
- 정상적인 트랜잭션 처리 중의 조치: DBMS가 장애에서 복구될 수 있도록 기반을 마련함
- 장애 발생 후의 조치: 원자성, 일관성, 지속성을 보장하는 상태로 데이터베이스를 복원함
- 기본 저장 장치에 따라 DBMS 컴포넌트가 나뉘며, DBMS가 처리해야 할 장애 유형은 크게 3가지로 분류됨
Type 1: Transaction Failures (트랜잭션 장애)
- Logical Errors (논리적 오류)
- 무결성 제약 조건(Integrity constraint) 위반 등 내부 오류 조건으로 인해 트랜잭션이 완료되지 못하는 상황임
- Internal State Errors (내부 상태 오류)
- 교착 상태(Deadlock) 등 치명적인 오류 조건으로 인해 DBMS가 활성 트랜잭션을 강제로 종료해야 하는 상황임
Type 2: System Failures (시스템 장애)