본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

WAL; Write-Ahead Logging

데이터베이스 시스템에서 ACID의 특성 가운데 원자성과 내구성을 제공하는 기술의 한 계열이다.
  • 모든 수정은 적용 이전에 로그에 기록
  • redo 및 undo 정보 모두 로그에 기록

갱신 로그에는 데이터 항목의 두 값이 들어간다.

  • BFIM(Before Image) - 갱신 전 값. 실패하거나 철회된 트랜잭션의 변경을 되돌리는 UNDO 에 쓴다
  • AFIM(After Image) - 갱신 후 값. 커밋된 트랜잭션의 변경이 디스크에 반영되기 전에 장애가 나면 다시 적용하는 REDO 에 쓴다

BFIM 을 UNDO 형 로그 항목, AFIM 을 REDO 형 로그 항목이라고도 한다. 둘을 바꾸어 "AFIM 은 UNDO 대비, BFIM 은 REDO 대비"라고 하면 틀린다.

  1. 디스크의 데이터 항목을 새 값으로 덮어쓰기 전에, 그 항목의 BFIM 을 담은 로그를 먼저 안정 저장소에 기록한다. 그래야 덮어쓴 뒤 장애가 나도 UNDO 할 수 있다
  2. 트랜잭션의 커밋을 완료하기 전에, 그 트랜잭션의 AFIM 을 담은 로그를 모두 안정 저장소에 기록한다. 그래야 데이터 페이지가 아직 디스크에 없더라도 REDO 할 수 있다
  • 로그 버퍼는 주기억장치(휘발성, volatile)에 있고 로그 파일은 디스크(비휘발성, persistent)에 있다. 휘발성·비휘발성은 로그가 어디에 있는가의 구분이지, 로그 항목이 대비하는 회복 연산의 이름이 아니다

관련 알고리즘

편집 원본 편집
  • PostgreSQL 데이터베이스 시스템은 WAL을 사용하여 포인트 인 타임 복구와 데이터베이스 복제 기능을 제공
  • SQLite 데이터베이스도 WAL을 지원
  • 몽고DB는 로그 선행 기입을 사용하여 일관성과 충돌 안전을 제공
  • 아파치 HBase는 WAL을 사용하여 재난 후 복구를 제공