예시 로그 1건
로그 레코드는 하나의 변경을 기록하면서도 순서, 트랜잭션 연결, 복구 값을 함께 남깁니다.

즉, “무엇을 바꿨는가”만 적는 게 아니라 Redo와 Undo가 바로 판단할 수 있는 맥락까지 한 줄에 모읍니다.

전역 순서
LSN 1004
앞뒤 로그를 정렬
트랜잭션
TxID T1
같은 작업 묶음
무슨 변경인가
UPDATE B.bal
어느 데이터에 어떤 연산인지
값 변화
500 → 400
Before / After
이전 로그
PrevLSN 1002
같은 Tx의 직전 기록

LSN은 전체 시간축입니다

Redo는 로그를 앞에서 뒤로 읽습니다. 페이지의 pageLSN과 비교하면 이미 반영된 변경은 건너뛸 수 있습니다.

1002 1004 pageLSN=1003

TxID와 PrevLSN은 트랜잭션 체인입니다

같은 트랜잭션의 로그를 연결 리스트처럼 이어서, Undo가 마지막 변경부터 거꾸로 따라갈 수 있게 만듭니다.

1001 1002 1004

연산과 대상이 있어야 위치를 찾습니다

UPDATE B.bal처럼 무엇을 바꿨는지 기록해야 Redo가 다시 적용할 위치와 Undo가 되돌릴 위치가 분명해집니다.

페이지 / 레코드 식별 변경 연산

Before와 After가 복구 방향을 나눕니다

Before는 롤백용, After는 재적용용입니다. 한 레코드만 봐도 Undo와 Redo가 참조할 값이 갈립니다.

Undo: 500 Redo: 400