Redo -> Undo Redo는 먼저 복구 기준점을 되살리고, Undo는 그 다음에 미커밋만 되돌립니다.

장애 직후에는 무엇이 디스크에 남았는지, Undo 정보가 온전한지 즉시 알 수 없습니다. 그래서 로그 기준으로 전체 상태를 먼저 맞춘 뒤에만 정확한 롤백이 가능합니다.

장애 직후

시작 상태는 불확실합니다

디스크 반영 범위를 모름

어떤 변경은 이미 데이터 파일에 있고, 어떤 변경은 Buffer Cache에만 있었을 수 있습니다.

Undo 정보가 일부 사라질 수 있음

메모리에만 있던 Undo Segment는 시스템 장애와 함께 소실될 수 있습니다.

1
먼저 Redo

로그 전체를 다시 적용해 기준 상태를 복원

Undo Segment도 Redo 로그로 복원

Redo는 데이터 변경뿐 아니라 Undo 관련 변경도 다시 살려서, 이후 롤백의 근거를 복구합니다.

전체 재적용이 안전함

이미 디스크에 있던 변경에 다시 Redo를 적용해도 결과가 같아서, 모호한 상태를 가장 안전하게 정리할 수 있습니다.

2
그 다음 Undo

미커밋 트랜잭션만 정확히 롤백

복원된 Undo 정보를 사용

Redo가 끝난 뒤에는 어떤 변경이 되돌려져야 하는지 추적할 수 있습니다.

커밋된 변경은 유지

커밋 안 된 변경만 제거하므로 원자성과 지속성이 함께 맞춰집니다.

최종 결과 왜 순서가 중요한가

Redo가 바닥 상태와 Undo 근거를 복원해야만, Undo가 정확한 대상만 되돌릴 수 있습니다.

커밋된 변경은 살아남음

지속성 보장: 장애 전 커밋된 결과는 다시 반영됩니다.

미커밋 변경만 제거됨

원자성 보장: 끝나지 않은 트랜잭션만 원래 상태로 되돌아갑니다.