트랜잭션과 회복 기법

DBSQL트랜잭션
읽는데 4분 소요
처음 쓰여진 날: 2025-10-12
마지막 수정일: 2025-10-12

요약

데이터베이스 트랜잭션의 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

  1. 페이지 테이블은 데이터베이스에서 논리적 페이지 번호와 물리적 디스크 주소를 매핑하는 테이블입니다.