Database는 매 요청마다 disk의 data page를 즉시 안전하게 고쳐 쓰지 않습니다.대부분의 storage engine은 memory 안에서 page를 먼저 바꾸고, 변경 기록을 log에 남긴 뒤, 실제 data page flush는 나중에 처리합니다.이때 장애가 나면 자연스럽게 질문이 생깁니다.“COMMIT이 성공했다고 응답했는데 서버 전원이 꺼지면 데이터는 어디까지 살아남을까?”이 질문의 핵심에 있는 개념이 WAL, 즉 Write-Ahead Log입니다. WAL의 핵심은 data page를 영구 저장소에 반영하기 전에, 그 변경을 복구할 수 있는 log record를 먼저 durable 하게 기록하는 것입니다. WAL은 commit durability와 crash recovery를 연결하는..