트랜잭션 로그는 데이터베이스 관리 시스템(DBMS)이나 파일 시스템에서 수행된 트랜잭션(거래)의 변경 내용을 순차적으로 기록한 파일 또는 데이터 구조를 말한다. 트랜잭션 로그는 주로 다음과 같은 목적을 가진다.
-
복구(Recovery)
- 시스템 장애나 전원 장애 발생 시, 로그에 기록된 정보를 이용해 정상 상태로 복구한다.
- 커밋된 트랜잭션은 재실행(redo)하고, 커밋되지 않은 트랜잭션은 롤백(undo)한다.
-
원자성 보장
- 트랜잭션은 “전부 수행하거나 전혀 수행되지 않음”이라는 원자성을 유지해야 한다. 로그는 트랜잭션 시작과 종료(커밋/롤백)를 기록함으로써 이를 뒷받침한다.
-
동시성 제어
- 로그 기반의 다중버전 동시성 제어(MVCC) 등에서 타임스탬프 또는 버전 정보를 제공한다.
-
감사 및 추적
- 데이터 변경 이력을 감시하거나 법적·규제 요구사항을 충족하기 위해 로그를 보관한다.
구성 요소
- 트랜잭션 시작 기록(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의 로그 기반 저장, 분산 트랜잭션 조정에 로그가 사용된다. |
동작 원리
- 트랜잭션이 시작되면 로그에 시작 기록을 남긴다.
- 트랜잭션이 수행하는 각 데이터 변경 작업은 로그에 순차적으로 기록된다. 이때 디스크에 실제 데이터를 쓰기 전에 로그가 먼저 영속화된다(Write‑Ahead Logging, WAL).
- 트랜잭션이 정상 종료되면 커밋 기록을 추가하고, 필요에 따라 로그에 저장된 변경 내용을 데이터 파일에 반영한다(redo).
- 장애 발생 시, 복구 과정은 로그를 뒤에서부터 탐색해 커밋되지 않은 트랜잭션을 undo하고, 커밋된 트랜잭션을 redo한다.
관련 용어
- Write‑Ahead Log (WAL): 로그를 먼저 기록하고 나중에 데이터를 갱신하는 방식.
- 체크포인트: 로그와 데이터 파일을 동기화하고 불필요한 로그를 삭제하는 시점.
- Redo Log / Undo Log: 각각 재실행과 롤백을 위한 로그 구역.
참고 문헌
- 데이터베이스 시스템 개론, 김성훈 외, 2019.
- 《Database System Concepts》, Silberschatz, Korth, Sudarshan, 7th ed., 2019.
※ 본 항목은 널리 알려진 컴퓨터 과학·정보기술 분야의 표준 개념을 기반으로 기술되었으며, 특정 상표·제품명을 제외하고 일반적인 기술 원리를 서술하였다.