토픽 57 / 201·무결성 및 트랜잭션
WAL (Write-Ahead Logging)
WAL (Write-Ahead Logging)
데이터베이스 데이터 페이지를 변경하기 전에 반드시 해당 변경에 대한 로그 레코드를 먼저 영구 저장하는 기법
특징: 트랜잭션 지속성(Durability) 보장, 순차 I/O로 성능 우수, 장애 복구 핵심 메커니즘
구성요소
- •로그 레코드(Log Record): 변경 전(Before Image)/후(After Image) 값 저장
- •LSN(Log Sequence Number): 로그 레코드의 고유 순서 식별자
- •로그 버퍼(Log Buffer): 메모리에 로그 임시 저장 후 일괄 플러시
동작원리
- •데이터 변경 시 먼저 로그 레코드 생성
- •커밋 시 로그를 디스크에 플러시(Force-Log-at-Commit)
- •데이터 페이지는 지연 기록(Lazy Write) 가능
적용사례: PostgreSQL, MySQL InnoDB, Oracle, 거의 모든 RDBMS의 표준 방식
비교: WAL(로그선행/순차I/O/빠름) vs Shadow Paging(페이지복사/랜덤I/O/느림)
연관: 회복, ACID, 체크포인트, REDO/UNDO