맨 마지막 TT에 (T2, U, 160)이 들어갈 것이다. 만약 (150, T1, End)가 없다면 (140, T1, Commit)이 있을 것이다. 뒤뒤 transaction commits 참조.
Write LSN을 하는 이유는 crash 됐을 때 checkpoint 기록을 찾기 위해서이다.
- 여기서 undonextLSN-nil은 undo all action of T1을 의미한다.
- T1이 P5에 lock을 걸어서 다른 T들이 P5 못 건든다.
- 45에서 CLR을 남기는 이유는 Undo를 여러번 하는 것을 방지하기 위해서다.
end checkpoint로 가서 예전에 햇던 것처럼 하나씩 진행하면서 Xact Table과 Dirty Page Table을 채운다.
LSN 20까지 했을 때
LSN 30
Analysis phase 알고리증메 따르면 abort일떄 특별히 할 것은 없고 lasnLSN만 갱신해준다.
LSN 40
마찬가지로 "Other records"dlamfh lastLSN만 갱신해준다.
LSN 45
LSN 50
LSN 60
steal은 before crash write to the disk를 의미하지만, in terms of record this steal is not part of the record. This is only indicating what is actually happening. So cannot tell whether already write to disk or not. So we always assume not beting write to disk. 하지만 P5 alreay has oldest recLSN (10). 그래서 바꾸지 않는다.
steal 자체는 log record에 남지 않는듯하다? 강의 52분 부분부터.
마지막 테이블로 봤을 때, 크래쉬 당시에 active 한 것은 T2 T3였다.
analysis phase 알고리즘대로 end record가 아니면 그냥 다 TT에 갱신한다 (abort 같은 거일지라도). (아마 crash 직전이라 그런거 같다). steal이 발생해도 DPT에서 지우는 것이 아니라 그냥 오래된 것을 유지하면된다 (60이 disk에 쓰였는지 안쓰였는지 알 수 없기 때문이다). 물론 commit이 있으면 TT에서 status를 바꿔준다.