트랜잭션과 회복 기법
요약
데이터베이스 트랜잭션의 ACID 특성(원자성, 일관성, 고립성, 지속성)과 다양한 데이터베이스 회복 기법(로그 기반, 체크포인트, 그림자 페이징)을 표로 요약하고 실기 시험 문제를 풀어봅니다.
용어 | 키워드 |
---|---|
원자성(Atomicity) | All or Nothing, 모두 실행되거나 하나도 실행되지 않음 |
일관성(Consistency) | 데이터베이스 일관된 상태 유지, 실행 후에도 일관성 보장 |
고립성(Isolation) | 다른 트랜잭션 끼어들 수 없음, 동시 실행 제어 |
지속성(Durability) | 영구적 저장, 성공 완료된 결과 보장 |
REDO | 재실행, 성공 완료된 트랜잭션의 변경 내용 다시 적용 |
UNDO | 취소, 실패한 트랜잭션의 변경 내용 원래 상태로 복구 |
Locking | 직렬화 기법, 데이터 항목 잠금, 동시 접근 제어 |
트랜잭션의 특성: ACID
트랜잭션은 데이터베이스의 무결성과 일관성을 보장하기 위해 다음과 같은 네 가지 주요 특성(ACID)을 만족해야 합니다.
특성 (Property) | 설명 (Description) |
---|---|
원자성 (Atomicity) | 트랜잭션의 연산은 모두 정상적으로 실행되거나 하나도 실행되지 않아야 합니다 (All or Nothing). |
일관성 (Consistency) | 트랜잭션 실행 후에도 데이터베이스는 항상 일관된 상태를 유지해야 합니다. |
고립성 (Isolation) | 하나의 트랜잭션이 실행 중일 때 다른 트랜잭션이 끼어들 수 없습니다. |
지속성 (Durability) | 성공적으로 완료된 트랜잭션의 결과는 영구적으로 데이터베이스에 저장되어야 합니다. |
데이터베이스 회복 기법
데이터베이스에 장애가 발생했을 때 데이터를 이전의 일관된 상태로 복구하기 위한 기법들입니다.
회복 기법의 핵심 요소
요소 (Component) | 설명 (Description) |
---|---|
REDO (재실행) | 트랜잭션이 성공적으로 완료(COMMIT)되었지만, 변경 내용이 디스크에 반영되지 않았을 경우 해당 내용을 다시 적용합니다. 트랜잭션 시작(Start)과 완료(Commit)에 대한 기록이 있는 경우 |
UNDO (취소) | 트랜잭션이 실패(FAILED)했을 때, 변경 이전의 원래 상태로 되돌립니다. 트랜잭션 기록에 시작(Start) 있지만, 완료(Commit) 없는 경우 |
회복 기법의 종류
로그 기반 회복 (Log-based Recovery)
데이터베이스의 변경 사항을 로그 파일에 순차적으로 기록하고, 장애 발생 시 이 로그를 이용해 복구하는 기법입니다.
-
지연 갱신 (Deferred Update)
트랜잭션이 성공적으로 완료될 때까지 데이터베이스에 대한 변경을 지연시킵니다. UNDO가 필요 없으며 REDO만 사용합니다.
-
즉각 갱신 (Immediate Update)
트랜잭션 수행 중 발생하는 변경 사항을 즉시 데이터베이스에 반영합니다. REDO와 UNDO가 모두 필요할 수 있습니다.
체크포인트 회복 (Checkpoint Recovery)
특정 시점(체크포인트)에 데이터베이스의 일관된 상태를 저장하고, 장애 발생 시 가장 최근의 체크포인트에서부터 회복을 시작하여 복구 시간을 단축하는 기법입니다.
그림자 페이징 (Shadow Paging)
트랜잭션 시작 전 원본 페이지의 복사본(그림자 페이지)을 만들고, 트랜잭션 중에는 현재 페이지에 변경을 적용하며, 성공 시 그림자 페이지 테이블1을 현재 페이지 테이블로 교체하는 기법입니다.
트랜잭션 동시성 제어
여러 트랜잭션이 동시에 실행될 때 데이터베이스의 일관성을 유지하기 위한 기법입니다.
Locking (로킹)
개념 (Concept) | 설명 (Description) |
---|---|
Locking (로킹) | 트랜잭션이 데이터 항목에 접근할 때 해당 항목을 잠그는 기법으로, 다른 트랜잭션의 동시 접근을 제어하여 데이터의 일관성을 보장합니다. |
공유 락 (Shared Lock, S-Lock) | 데이터를 읽을 때 사용하는 락으로, 여러 트랜잭션이 동시에 같은 데이터를 읽을 수 있지만, 쓰기는 불가능합니다. |
배타 락 (Exclusive Lock, X-Lock) | 데이터를 쓸 때 사용하는 락으로, 해당 트랜잭션만이 데이터에 접근할 수 있으며, 다른 트랜잭션은 읽기/쓰기 모두 불가능합니다. |
2단계 락킹 (2-Phase Locking) | 트랜잭션의 락 획득과 해제를 두 단계로 나누어 직렬화를 보장하는 프로토콜입니다. 확장 단계(락 획득만)와 수축 단계(락 해제만)로 구성됩니다. |
정보처리기사 실기 문제
문제를 불러오는 중...
문제를 불러오는 중...
문제를 불러오는 중...
문제를 불러오는 중...
Footnotes
-
페이지 테이블은 데이터베이스에서 논리적 페이지 번호와 물리적 디스크 주소를 매핑하는 테이블입니다. ↩