[CMPT 454] Week12_1

June·2021년 4월 1일
0

CMPT 454

목록 보기
31/33

Effect of CLR

CLR is a new log record for undo. CLR represents UNDO.

undoing a CLR 은 undo를 undo하는 것이 아니다. if thre is more record to undo (undonextLSN!=nil), aff undonextLSN to ToUndo.

The Effects of CLRs

140, 150, 160은 crash이후 undo phase를 남긴 것이다.
140: T1 CLR LSN 130은 130을 UNDO 했다는 것이다. 150은 120을 UNDO 했다는 것이고 160은 110을 UNDO한 것이다.

두 번쨰 crash이후 다시 이전것들 redo한다. 다시 analysis, redo를하고 undo에서, 160을 보면 != nil 이므로 화살표가 가리키고 있는 100을 ToUndo에 추가한다. 그래서 결국 to finish every thing undo (T1 CLR LSN 100). 이걸 하고 170이 추가된거다.

Additional Crash Issues

anlysis나 redo phase에서 second crash가 발생하면?
log는 변하지 않는다. redo는 does not create any new record.
그냥 incremental하게 계속된다.
undo중에 second crash가 일어나야만 log가 바뀐다.

how do you limit the amount of work in redo phase?
smallest recLSN in DPT가 아주 오래전이면 해야할 일이 아주 많을 것이다.
in order to make start poing (dirty page), flush data pages to disk asynchronously. (don't keep dirty page to old in memory)

how do you limit the amount of work in UNDO phase?
-> break long transaction into shorter transactions.

how do you limit the work of analysis phase?
-> make chkpt more frequently.

Media Recovery

media recovery means disk crash.
second disk에 checkpoint와 log만 (what has been changed만) 기록해두는 전략이다.

Summary of Logging/Recovery

Summary, Cont.

Excercise

http://pages.cs.wisc.edu/~dbbook/openAccess/thirdEdition/solutions/ans3ed-oddonly.pdf

1은 write가 exclusive lock을 걸지만, read에 관해서 shared lock이 없다. 즉 다른 것이 already has exclusive lock, read is always successful. You don't need to get shared lock.

  R1(A), X2(A), W2(A), R1(A), C1, C2, U2(A). 

R1(A)가 가능한 이유는 R에 관해서 shared lock을 걸지 않기 때문이다. 이것은 serializable하지 않다. R1(A), W2(A)는 t1t2를 요구하고, W2(A), R1(A)는 T2T1을 요구한다. W2(A), R1(A)에서 dependency가 있으므로 recoverable 하지 않다 (C1이 C2보다 빠르다). recoverable says if you depend on somebody, you should commit after somebody.

cycle이 있으니 not serializable, so not conflict serializable. recoverable 하지 않으니 no aca.

2는 확실히 2PL이 아니다. 2PL은 all the lock request 이후에 release하기 때문이다.

ACA is ensured by holding X-lock until the transaction end.

5를 예로 들면 T2는 abort되어있다. abort된 것은 무시하고 생각해라.(serializable, conflict-serializable 경우)
recoverable 생각할때는 다 고려해야한다. W2(X), W1(X) dependency가 있다. if t1 depends on t2 then t1 should not commit before t2 commit. 하지만 여기서는 commit 했다.

view serializable은 그냥 serializable이다.
strict는 aca schedule이다. ignore해라.

0개의 댓글