WAL의 커밋 경계

로그가 디스크에 있어야만 커밋을 인정할 수 있습니다.

WAL은 데이터 페이지를 바로 쓰는 규칙이 아니라, 로그를 먼저 안전하게 남긴 뒤 데이터 파일 기록을 늦출 수 있게 하는 순서 규칙입니다.

공통 순서: 메모리 변경 → 로그 선행 기록 → 커밋 허용 → 데이터 페이지 기록
커밋 판단점은 2단계입니다.
1
변경 발생
버퍼 캐시에 새 값이 생기고, Undo/Redo 정보도 함께 만들어집니다.
2
로그 먼저 디스크
Undo 정보가 먼저 있어야 롤백 가능하고, Redo flush가 끝나야 COMMIT을 약속할 수 있습니다.
3
COMMIT 응답
장애가 나도 로그를 근거로 커밋된 변경을 다시 살릴 수 있습니다.
4
데이터 페이지 기록
체크포인트나 백그라운드 쓰기에서 나중에 내려가도 일관성은 유지됩니다.
규칙 1 · Undo Rule
Before Image를 먼저 남겨야 롤백할 수 있습니다.
적용 경계: 데이터 파일에 변경된 페이지를 쓰기 전
없으면: 장애 시 원래 값을 잃어버려 커밋되지 않은 변경을 되돌릴 수 없습니다.
규칙 2 · Redo Rule
Redo 로그 flush가 끝나야 COMMIT을 응답할 수 있습니다.
적용 경계: 트랜잭션 커밋 직전
없으면: 커밋 후 장애에서 변경 내역을 재적용할 근거가 없어 지속성이 깨집니다.
성능
커밋 시점에는 순차 I/O인 로그 flush만 기다리면 되고, 흩어진 데이터 페이지 쓰기는 뒤로 미룰 수 있습니다.
정리
데이터보다 로그가 먼저 디스크에 있어야 원자성과 지속성을 함께 지킬 수 있습니다.