선행 기록 로깅 (write-ahead logging)
한 줄 정의: 데이터를 실제로 고치기 전에 변경 내용을 먼저 로그에 기록해 장애가 나도 복구할 수 있게 하는 데이터베이스 기법이에요.
쉽게 풀면
은행 이체 도중 서버가 꺼지면 돈이 빠져나가기만 하고 들어가지 않을 수 있어요. 선행 기록 로깅은 데이터를 고치기 전에 "무엇을 어떻게 바꿀지"를 먼저 로그 파일에 안전하게 적어 둬요. 서버가 다시 켜지면 로그를 보고 끝난 작업은 마저 반영하고, 끝나지 않은 작업은 취소해요.
왜 중요한가
대부분의 관계형 데이터베이스와 여러 파일 시스템의 복구 기능을 떠받치는 핵심 기법이라 데이터베이스 시스템 연구의 기본이에요. 복제와 스트리밍 시스템에서도 로그 개념이 널리 쓰여요.
논문에서는 이렇게 쓰입니다
"WAL을 NVMe SSD로 분리 배치하자 트랜잭션 커밋 지연 시간이 평균 40% 감소하였다."
로그 기록 경로가 성능에 주는 영향을 측정한 문장이에요.
조금 더 깊게 보면
핵심 규칙은 데이터 페이지를 디스크에 쓰기 전에 그 변경을 담은 로그가 먼저 디스크에 저장되어야 하고, 트랜잭션은 로그가 저장된 뒤에야 커밋된 것으로 본다는 거예요. 이렇게 하면 ACID 중 원자성과 지속성을 보장할 수 있어요. 대표 복구 알고리즘인 ARIES는 로그로 장애 직전 상태를 재현(redo)하고 미완료 트랜잭션을 되돌려(undo) 복구해요. 주기적인 체크포인트로 복구할 로그 양을 줄이고, PostgreSQL 등은 이 로그를 복제에도 활용해요.
주의할 점
이 개념은 기존 사전에 직접 대응하는 항목이 없어요. 로그를 먼저 쓰는 것이 핵심이며, 데이터 자체를 먼저 쓰고 나중에 기록하는 일반적인 작업 로그와는 순서와 목적이 다르다는 점을 구분해야 해요.