[CMPT 454] Week10_1

June·2021년 3월 17일
0

CMPT 454

목록 보기
25/33

Locking alone is insufficient for serializabilty

W1(A)다음 W2(A)이므로 T1 -> T2 이고 W2(B) 다음 W2(B)여서 T2 -> T1이다. Cycle이 있으므로 not serializable.

Two-Phase Locking (2PL)

Example: 2PL

첫번째 막대기 이후는 T1이 shrinking 한다. 첫 막대 이전에 T1은 필요한 lock을 다 얻었다. 두번째 막대는 T2가 shrinking한다.

Strict 2PL

Example: Strict 2PL (Each Xact hold locks to the end)

R2(A), W1(A), W2(A), R3(A), R1(A)

R2(A)는 Shared lock이다. 따라서 W1(A)가 블락된다. R1(A)였으면 가능했다.

R2(A), W1(A), W2(A), R3(A), R1(A)

Deadlock with strict 2PL

Summary

Lock Manager Implementation

Handling a Lock Request

Handling a Lock Release

Lock Upgrades

첫번째 시나리오에서 T1이 S lock을 얻고 T2가 X lock을 얻기 위해 기다리고 있다. 만약 T3가 S lock을 얻고자한다고 허용하면 T2는 계속 기다려야한다. 따라서 이걸 방지하기 위해 first come first served이다.

두번째에서는 X1을 upgrade로 허용해준다.

x lock은 아무도 안기다리고 있을때 허용해준다.
s lock은 shared이다.

S1, S2, X2, S3, S1 상황에서 S1이후 S2까지는 허용되지만 X2는 허용되지 않는다.

Deadlock Detection

Deadlock Prevention

W1(A) W2(B) R1(B) R2(A) T1-older and T2-younger

그냥 오래된 T가 항상 우선권을 가지고 있는데 Wait-die는 younger가 앞에 older가 있으면 스스로 죽고? Wound-wait은 older가 younger를 죽이는 것 같다?

데드락 해결 방법

데드락 해결 방법 블로그

![](https://images.velog.io/images/injoon2019/post/15730e78-3d5a-49e6-8caf-7638f6e2b754/image.png

0개의 댓글