데이터베이스트랜잭션

검색

검색어를 입력해 개념, 문제, 필기를 찾습니다.

트랜잭션과 회복 기법

DBSQL트랜잭션
읽는데 8분 소요
처음 쓰인 날: 2025-10-12
마지막 수정일: 2026-06-18
조회수:

요약

데이터베이스 트랜잭션의 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을 사용하는 기법입니다. 트랜잭션을 시작하면 그림자 페이지 테이블을 현재 페이지 테이블의 복사본으로 만들어 두며, 이 시점에는 두 테이블 모두 변경 전 원본 페이지를 가리킵니다. 변경이 일어나면 원본 페이지를 직접 고치지 않고 새 페이지를 만들어 변경 내용을 기록한 뒤, 현재 페이지 테이블이 그 새 페이지를 가리키도록 갱신합니다(예: 3번 페이지를 수정할 때 3번 페이지 자체를 건드리지 않고 새 페이지에 수정값을 쓴 뒤 현재 페이지 테이블만 새 페이지를 가리키게 바꿉니다). 이때 그림자 페이지 테이블은 트랜잭션 내내 변경 전 원본 페이지를 가리킨 채로 남습니다. 변경 전 원본을 그림자처럼 그대로 보존한다고 해서 '그림자' 페이지 테이블이라 부릅니다. 트랜잭션이 성공하면 현재 페이지 테이블을 확정 상태로 삼고 그림자 페이지 테이블은 버립니다. 실패하면 새 페이지를 가리키던 현재 페이지 테이블을 버리고 그림자 페이지 테이블을 다시 정식 테이블로 쓰면 됩니다(원본은 한 번도 수정되지 않았으므로 이미 복구 완료). 즉, 실패 시 변경 내용을 하나하나 되돌리는 별도의 취소(UNDO) 작업 없이 변경 전 상태로 복구됩니다.

그림자 페이징 변경 전·후 상태 다이어그램
그림자 페이징의 변경 전·후 상태: 현재 페이지 테이블은 새 페이지로, 그림자 페이지 테이블은 원본을 계속 가리킴

트랜잭션 동시성 제어

여러 트랜잭션이 동시에 실행될 때 데이터베이스의 일관성을 유지하기 위한 기법입니다.

Locking (로킹)

개념 (Concept)설명 (Description)
Locking (로킹)트랜잭션이 데이터 항목에 접근할 때 해당 항목을 잠그는 기법으로, 다른 트랜잭션의 동시 접근을 제어하여 데이터의 일관성을 보장합니다.
공유 락 (Shared Lock, S-Lock)데이터를 읽을 때 사용하는 락으로, 여러 트랜잭션이 동시에 같은 데이터를 읽을 수 있지만, 쓰기는 불가능합니다.
배타 락 (Exclusive Lock, X-Lock)데이터를 쓸 때 사용하는 락으로, 해당 트랜잭션만이 데이터에 접근할 수 있으며, 다른 트랜잭션은 읽기/쓰기 모두 불가능합니다.
2단계 락킹 (2-Phase Locking)트랜잭션의 락 획득과 해제를 두 단계로 나누어 직렬화를 보장하는 프로토콜입니다. 확장 단계(락 획득만)와 수축 단계(락 해제만)로 구성됩니다.

트랜잭션 제어 명령어 (TCL)

TCL(Transaction Control Language)은 트랜잭션의 시작·종료·취소를 사용자가 명시적으로 제어하는 SQL 명령어입니다.

명령어역할
COMMIT트랜잭션의 변경 내용을 영구적으로 데이터베이스에 저장합니다.
ROLLBACK트랜잭션의 변경 내용을 취소하고 트랜잭션이 시작되기 이전 상태로 데이터베이스를 복구합니다.
SAVEPOINT트랜잭션 내 특정 지점을 저장해, 그 지점까지만 부분적으로 ROLLBACK 할 수 있게 해 줍니다.

정보처리기사 실기 문제


Footnotes

  1. 페이지는 DB가 데이터를 저장하는 일정 크기의 단위(데이터 묶음)입니다. 페이지 테이블은 몇 번 페이지가 디스크 어디에 저장돼 있는지 적어둔 표(주소록 같은 것)입니다.


관련 글

(14개)
제목태그시험
데이터베이스 스키마 3단계 구조 (외부, 개념, 내부)
스키마
-
DB 왕감자 정보처리기사 실기 모의 시험
DB
응시
데이터 모델 3요소와 요개논물(설계 4단계)
E-R 다이어그램
-