선행 기록 로그

Write-ahead log

데이터 페이지를 바꾸기 전에 변경 기록을 안전하게 남깁니다.

···
html
<div class="demo"><div class="head"><b>WRITE-AHEAD LOG</b><span>UPDATE balance</span></div><div class="stage wal"><div class="step cell">1 · WAL</div><div class="step cell">2 · commit</div><div class="step cell">3 · page</div></div><div class="foot"><span id="walstatus">log record written first</span><span>crash → replay</span></div></div>
css
*{box-sizing:border-box}.demo{width:min(96vw,820px);height:min(94vh,350px);padding:clamp(8px,2vmin,18px);border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--fg);display:flex;flex-direction:column;gap:clamp(5px,1.5vmin,12px);font:600 clamp(12px,3.5vmin,15px)/1.25 var(--font-sans),sans-serif;overflow:hidden}.head,.foot,.row{display:flex;justify-content:space-between;align-items:center;gap:8px}.head b{color:var(--accent)}.head span,.foot,.muted{color:var(--muted)}.stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;gap:8px}.cell,.pill{border:1px solid var(--line);border-radius:8px;background:var(--bg);padding:clamp(4px,1.2vmin,9px);text-align:center}.pill{border-radius:999px}.on{border-color:var(--accent)!important;background:color-mix(in srgb,var(--accent) 17%,var(--surface))!important;color:var(--fg)!important}.bad{border-color:#e16a5d!important;background:color-mix(in srgb,#e16a5d 18%,var(--surface))!important}.foot{font-size:clamp(12px,3vmin,14px)}.wal{justify-content:space-around}.wal .step{min-width:27%;transition:.25s}@media(max-width:400px){.wal{gap:3px}.wal .step{min-width:30%;padding:3px}}
js
let n=0;const s=['log record written first','commit acknowledged','data page updated'];function tick(){document.querySelectorAll('.wal .step').forEach((e,i)=>e.classList.toggle('on',i<=n));document.getElementById('walstatus').textContent=s[n];n=(n+1)%3}tick();const t=setInterval(tick,1050);document.querySelector('.demo').onclick=()=>{clearInterval(t);tick()}

선행 기록 로그(WAL)는 데이터 페이지보다 먼저 변경 기록을 저장합니다. 장애가 나면 로그를 재생해 확정된 변경을 다시 적용할 수 있습니다.

데모는 로그 기록, 커밋, 페이지 반영의 순서를 보여줍니다. 로그의 내구성 설정과 체크포인트는 성능과 복구 시간에 영향을 주며, WAL 파일 자체만으로 백업 전체를 대신할 수는 없습니다.

언제 쓰나

DB 장애 복구, 복제 지연, 쓰기 성능을 이해할 때 WAL 흐름을 확인합니다.

페이지로 열기 ↗