Learning
토픽 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