WIPIVERSE

트랜잭션 로그

트랜잭션 로그는 데이터베이스 관리 시스템(DBMS)이나 파일 시스템에서 수행된 트랜잭션(거래)의 변경 내용을 순차적으로 기록한 파일 또는 데이터 구조를 말한다. 트랜잭션 로그는 주로 다음과 같은 목적을 가진다.

  1. 복구(Recovery)

    • 시스템 장애나 전원 장애 발생 시, 로그에 기록된 정보를 이용해 정상 상태로 복구한다.
    • 커밋된 트랜잭션은 재실행(redo)하고, 커밋되지 않은 트랜잭션은 롤백(undo)한다.
  2. 원자성 보장

    • 트랜잭션은 “전부 수행하거나 전혀 수행되지 않음”이라는 원자성을 유지해야 한다. 로그는 트랜잭션 시작과 종료(커밋/롤백)를 기록함으로써 이를 뒷받침한다.
  3. 동시성 제어

    • 로그 기반의 다중버전 동시성 제어(MVCC) 등에서 타임스탬프 또는 버전 정보를 제공한다.
  4. 감사 및 추적

    • 데이터 변경 이력을 감시하거나 법적·규제 요구사항을 충족하기 위해 로그를 보관한다.

구성 요소

  • 트랜잭션 시작 기록(Begin Transaction)
  • 데이터 변경 기록(Update, Insert, Delete 등) – 보통 변경 전 이미지(before image)와 변경 후 이미지(after image)를 함께 저장한다.
  • 커밋 기록(Commit) – 트랜잭션이 정상 종료되었음을 표시한다.
  • 롤백 기록(Rollback) – 트랜잭션이 취소되었음을 표시한다.
  • 체크포인트 기록(Checkpoint) – 로그와 데이터베이스의 현재 상태를 동기화하고, 로그의 일부를 정리(삭제)할 수 있는 시점을 나타낸다.

주요 활용 분야

분야 적용 사례
관계형 데이터베이스 Oracle, MySQL(InnoDB), PostgreSQL, Microsoft SQL Server 등에서 로그 파일을 사용해 복구와 트랜잭션 무결성을 보장한다.
NoSQL 데이터베이스 Apache Cassandra, MongoDB 등에서 쓰기 앞서 로그(Write Ahead Log, WAL) 방식을 채택한다.
파일 시스템 NTFS, ext4 등에서 메타데이터 및 파일 내용의 변화 기록에 로그를 활용한다.
분산 시스템 Apache Kafka의 로그 기반 저장, 분산 트랜잭션 조정에 로그가 사용된다.

동작 원리

  1. 트랜잭션이 시작되면 로그에 시작 기록을 남긴다.
  2. 트랜잭션이 수행하는 각 데이터 변경 작업은 로그에 순차적으로 기록된다. 이때 디스크에 실제 데이터를 쓰기 전에 로그가 먼저 영속화된다(Write‑Ahead Logging, WAL).
  3. 트랜잭션이 정상 종료되면 커밋 기록을 추가하고, 필요에 따라 로그에 저장된 변경 내용을 데이터 파일에 반영한다(redo).
  4. 장애 발생 시, 복구 과정은 로그를 뒤에서부터 탐색해 커밋되지 않은 트랜잭션을 undo하고, 커밋된 트랜잭션을 redo한다.

관련 용어

  • Write‑Ahead Log (WAL): 로그를 먼저 기록하고 나중에 데이터를 갱신하는 방식.
  • 체크포인트: 로그와 데이터 파일을 동기화하고 불필요한 로그를 삭제하는 시점.
  • Redo Log / Undo Log: 각각 재실행과 롤백을 위한 로그 구역.

참고 문헌

  • 데이터베이스 시스템 개론, 김성훈 외, 2019.
  • 《Database System Concepts》, Silberschatz, Korth, Sudarshan, 7th ed., 2019.

※ 본 항목은 널리 알려진 컴퓨터 과학·정보기술 분야의 표준 개념을 기반으로 기술되었으며, 특정 상표·제품명을 제외하고 일반적인 기술 원리를 서술하였다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기