Schedule must be Serializable and Recoverable✨
trade-off: amount of Concurrency <-> amount of Overhead.
일반적인 경우 동시성으로 인해 throughput이 더 높아지긴 하지. 근데 그로 인해 발생하는 오버헤드도 있다는 거. -> 보통 lock 과정에서 발생
lock-X(A)read / write 둘 다 가능
lock-S(A)read 만 가능.
"grant" lock request.
💡 주의 shared lock 끼리는 서로 다른 transaction 에서도 동시에 lock 을 걸 수 있다는 점!
exclusive lock 이 껴있으면 상대 lock이 해제될 때까지 기다려야 함.
-> 보통 이건 잘 아는데, 문제는 shared lock으로 잡아둔다고 해서 다른 shared lock이 그걸 해제될때까지 기다릴 필요는 없다는 걸 인지하느냐는 거지 (난 못했음, 따라서 기록함..ㅜ)
not sufficient to guarantee serializability ㅠㅠ
그래서 뭐가 나왔다?
a.k.a 2PL
locksupgrade)release lockslocksupgrade)obtain locks(conflict) serializabilitydeadlocksstarvation also possiblecascading rollback is possible under 2PLexclusive locks until it commits/abortscascading roll-backall locks are held until commit/abortserialized in the order in which they commit둘다 한국말로는 엄격한 이라는 뜻인데, rigorous 가 shared locks 까지 붙잡고 있어서 더 강한 느낌이다.
추후 보충 예정 :)