정처기 감자
데이터베이스트랜잭션

검색

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

트랜잭션과 회복 기법

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) 없는 경우
UNDO와 Rollback은 다른 개념입니다
UNDO는 장애 발생 후 로그를 분석하여 미완료 트랜잭션의 변경을 자동으로 취소하는 회복(Recovery) 기법입니다. 반면 Rollback은 정상 운영 중에 사용자가 ROLLBACK 명령어로 트랜잭션을 명시적으로 취소하는 트랜잭션 제어 명령어(TCL)입니다. 이 문제처럼 '장애 시 로그를 분석하여'라는 표현이 나오면 회복 기법인 UNDO가 정답입니다.

회복 기법의 종류

로그 기반 회복 (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 할 수 있게 해 줍니다.
ROLLBACK과 UNDO를 헷갈리지 마세요
ROLLBACK은 정상 운영 중에 사용자가 명시적으로 실행하는 TCL 명령어이고, UNDO는 장애 발생 후 시스템이 자동으로 미완료 트랜잭션을 취소하는 회복 기법입니다. 문제에 '명령어'가 등장하면 ROLLBACK, '장애 시 로그를 분석하여'가 등장하면 UNDO입니다.

정보처리기사 실기 문제


Footnotes

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


메가커피와 함께, 홈페이지 개선에 참여하세요! ☕
혹시 이용에 불편한 점이나 개선이 필요한 부분을 발견하셨나요? 댓글로 알려주시면 더 나은 감자가 될 수 있어요! 🥔 제보해주신 모든 분께 메가커피 기프티콘을 드립니다! (본인 이메일로 댓글 달아주셔야해요~)

추천 개념

Beta

관련 글

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

정보처리기사 합격
도와줄라고 하는 감자

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 1회 이론 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 1회 이론 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매
© 2025 재현기획개발. All rights reserved.
  • 정처기 감자의 시작
  • 업데이트 로그
  • 개인정보 처리방침
  • 이용약관
상호명 : 재현기획개발 / 주소: 서울특별시 영등포구 영등포로 150, 지하1층 108호 L145 가라지(당산동1가, 생각공장 당산) / 대표: 김재현 / 전화: 010-8158-7127 / 통신판매업신고: 제2025-서울영등포-1569호 / 이메일: contact@edugamja.com / 사업자등록번호: 573-51-00999