예시 변경
UPDATE accounts SET balance = 200 WHERE id = 1; -- 기존값 100
학습 포인트

커밋의 기준선은
데이터 파일 쓰기가 아니라 로그 flush입니다.

데이터 페이지는 늦게 써도 되지만, 로그는 commit 전에 디스크에 있어야 장애 후 복구가 가능합니다.

① ② 메모리 단계

변경은 먼저 메모리 안에서 준비됩니다

로그 버퍼 LSN 1001, 100→200 변경 내용을 기록
버퍼 풀 데이터 페이지 값이 200으로 바뀌며 Dirty Page가 됨
디스크 데이터 파일은 아직 100인 상태일 수 있음

즉, 메모리의 변경디스크 반영은 같은 시점일 필요가 없습니다.

③ COMMIT 시점

로그를 먼저 안전하게 고정

WAL 파일에 COMMIT까지 flush 이 순간 DBMS는 클라이언트에 commit 완료를 응답합니다.
경계선: 이 단계만 넘기면 데이터 파일이 늦어도 Redo로 다시 200을 만들 수 있습니다.
장애가 바로 발생해도

데이터 파일이 아직 100이어도 괜찮습니다

로그 디스크에 100→200 변경과 COMMIT 정보가 있으므로, 재시작 후 Redo가 페이지를 다시 200으로 복원합니다.

④ 이후 배치 기록

데이터 페이지는 나중에 씁니다

체크포인트나 백그라운드 쓰기에서 데이터 파일을 갱신합니다. 그래서 WAL은 내구성쓰기 성능을 함께 확보합니다.