Undo는 최신 LSN부터 거꾸로 지우고, 지운 사실은 CLR로 다시 남깁니다.

대상은 ATT에 남은 미완료 트랜잭션뿐입니다. 그래서 Redo로 상태를 복구한 뒤에도 loser transaction의 흔적만 안전하게 걷어낼 수 있습니다.

대상: ATT의 loser transaction
로그 진행 방향
이전 로그 ← PrevLSN을 따라 역방향 스캔 ← 가장 최근 로그

종료 지점

BEGIN

더 이전 로그가 없으면 Undo가 끝납니다.

이전 변경

LSN 1005

`C.stock 50 → 49`
아직 commit되지 않았으므로 되돌릴 대상입니다.

시작점

LSN 1007

`D.price 1000 → 900`
Undo는 가장 최근 변경부터 먼저 처리합니다.

Undo 후 남기는 기록

CLR: `49 → 50` 복구

이 변경을 되돌렸다고 로그에 남기고 다음 PrevLSN으로 이동합니다.

Undo 후 남기는 기록

CLR: `900 → 1000` 복구

도중에 다시 장애가 나도, 다음 복구 때 이미 취소한 지점을 알 수 있습니다.

핵심: Undo는 최신 로그를 먼저 취소하고, 각 취소를 CLR로 기록해 복구가 다시 시작돼도 같은 결과로 수렴하게 만듭니다.