Concurrency Control III Dead Lock Time Stamp Ordering Validation Scheme 1 Learning Objectives Dealing with Deadlock and Starvation Time Stamp Ordering Technique Validation Database Implementation – Concurrency Control Yan Huang 2 Deadlocks Detection Wait-for graph Prevention Resource ordering Timeout Wait-die Wound-wait Database Implementation – Concurrency Control Yan Huang 3 Deadlock Detection Build Wait-For graph Use lock table structures Build incrementally or periodically When cycle found, rollback victim T2 T1 T4 T3 T5 T6 Database Implementation – Concurrency Control Yan Huang T7 4 Resource Ordering Order all elements A1, A2, …, An A transaction T can lock Ai after Aj only if i > j Problem : Ordered lock requests not realistic in most cases Database Implementation – Concurrency Control Yan Huang 5 Timeout If transaction waits more than L sec., roll it back! Simple scheme Hard to select L Database Implementation – Concurrency Control Yan Huang 6 Wait-die Transactions are given a timestamp when they arrive …. ts(Ti) Ti can only wait for Tj if ts(Ti)< ts(Tj) ...else die Database Implementation – Concurrency Control Yan Huang 7 Example: T1 wait (ts =10) T2 (ts =20) wait? wait T3 (ts =25) Very high level: only older ones have the privilege to wait, younger ones die if they attempt to wait for older ones Database Implementation – Concurrency Control Yan Huang 8 Wound-wait Transactions are given a timestamp when they arrive … ts(Ti) Ti wounds Tj if ts(Ti)< ts(Tj) else Ti waits “Wound”: Tj rolls back and gives lock to Ti Database Implementation – Concurrency Control Yan Huang 9 Example: T1 wait (ts =25) T2 (ts =20) wait wait T3 (ts =10) Very high level: younger ones wait; older ones kill (wound) younger ones who hold needed locks Database Implementation – Concurrency Control Yan Huang 10 Who die? Looks like it is always the younger ones either die automatically or killed What is the reason? Will the younger ones starve? Suggestions? Database Implementation – Concurrency Control Yan Huang 11 Timestamp Ordering Key idea: Transactions access variables according to an order decided by their time stamps when they enter the system No cycles are possible in the precedence graph Database Implementation – Concurrency Control Yan Huang 12 Timestamp System time when transactions starts An increasing unique number given to each stransaction Denoted by ts(Ti) Database Implementation – Concurrency Control Yan Huang 13 The way it works Two time stamps associated with each variable x RS(x): the largest time stamp of the transactions read it WS(x): the largest time stamp of the transactions write it Protocol: ri(x) is allowed if ts(Ti) >= WS(x) wi(x) is allowed if ts(Ti) >=WS(x) and ts(Ti) >=RS(x) Disallowed ri(x) or wi(x) will kill Ti, Ti will restart Database Implementation – Concurrency Control Yan Huang 14 x Example y z RS=-1 RS=-1 RS=-1 WS=-1 WS=-1 WS=-1 Assuming: ts(T1) = 100, ts(T2) = 200, ts(T3) = 300 T1 T2 T3 R(x); W(y); R (y); W(z); R(x); W(z); R(y); W(x); Database Implementation – Concurrency Control Yan Huang 15 x Example y z RS=100 RS=-1 RS=-1 WS=-1 WS=-1 WS=-1 Assuming: ts(T1) = 100, ts(T2) = 200, ts(T3) = 300 T1 T2 T3 R(x); W(y); R (y); W(z); R(x); W(z); R(y); W(x); Database Implementation – Concurrency Control Yan Huang 16 x Example y z RS=100 RS=-1 RS=-1 WS=-1 WS=-1 WS=100 Assuming: ts(T1) = 100, ts(T2) = 200, ts(T3) = 300 T1 T2 T3 R(x); W(y); R (y); W(z); R(x); W(z); R(y); W(x); Database Implementation – Concurrency Control Yan Huang 17 x Example y z RS=100 RS=200 RS=-1 WS=-1 WS=-1 WS=100 Assuming: ts(T1) = 100, ts(T2) = 200, ts(T3) = 300 T1 T2 T3 R(x); W(y); R (y); W(z); R(x); W(z); R(y); W(x); Database Implementation – Concurrency Control Yan Huang 18 x Example y z RS=100 RS=200 RS=-1 WS=-1 WS=300 WS=100 Assuming: ts(T1) = 100, ts(T2) = 200, ts(T3) = 300 T1 T2 T3 R(x); W(y); R (y); W(z); R(x); W(z); R(y); W(x); Database Implementation – Concurrency Control Yan Huang 19 x Example y z RS=200 RS=200 RS=-1 WS=-1 WS=300 WS=100 Assuming: ts(T1) = 100, ts(T2) = 200, ts(T3) = 300 T1 T2 T3 R(x); W(y); R (y); W(z); R(x); W(z); R(y); W(x); Database Implementation – Concurrency Control Yan Huang 20 x Example y RS=200 RS=200 WS=-1 z RS=-1 WS=100 WS=300 Assuming: ts(T1) = 100, ts(T2) = 200, ts(T3) = 300 T1 T2 T3 R(x); W(y); R (y); W(z); R(x); W(z); R(y); W(x); T1 is rolled back Database Implementation – Concurrency Control Yan Huang 21 Net result of TO scheduling Conflict pairs of actions are taken in the order of their home transactions But the basic TO does not guarantee recoverability Database Implementation – Concurrency Control Yan Huang 22 Validation An optimistic scheme Transactions have 3 phases: (1) Read all DB values read writes to temporary storage no locking (2) Validate check if schedule so far is serializable (3) Write if validate ok, write to DB Database Implementation – Concurrency Control Yan Huang 23 Time stamps of a transaction Ti Start(Ti) Validation(Ti) Finish(Ti) Database Implementation – Concurrency Control Yan Huang 24 Key idea Make validation atomic If T1, T2, T3, … is validation order, then resulting schedule will be conflict equivalent to Ss = T1 T2 T3... Database Implementation – Concurrency Control Yan Huang 25 Schedule T1 Read(A) A A+100; T2 Read(A) A Ax2; Read(B);B validate Write(A) Write(B); B+100 Read(B) B Bx2; validate Write(A) Write(B); Database Implementation – Concurrency Control Yan Huang 26 Example of what validation must prevent: T2 start RS(T2)={B} RS(T3)={A,B} WS(T2)={B,D} WS(T3)={C} = T2 T3 T3 validate validate T3 start T2 finishes finishes time Database Implementation – Concurrency Control Yan Huang 27 allow Example of what validation must prevent: RS(T2)={B} WS(T2)={B,D} T2 start T3 start RS(T3)={A,B} = WS(T3)={C} T2 T3 validated validated T2 finish phase 3 T3 start Database Implementation – Concurrency Control Yan Huang time 28 Another thing validation must prevent: RS(T2)={A} WS(T2)={D,E} T2 validated RS(T3)={A,B} WS(T3)={C,D} T3 validated finish BAD: w3(D) w2(D) Database Implementation – Concurrency Control Yan Huang T2 time 29 allow Another thing validation must prevent: RS(T2)={A} WS(T2)={D,E} T2 RS(T3)={A,B} WS(T3)={C,D} T3 validated validated finish T2 Database Implementation – Concurrency Control Yan Huang finish T2 time 30 Validation Rule When start validating T Check RS(T) WS(U) is empty for any U that started but (did not finish validation before T started) Check WS(T) WS(U) is empty for any U that started but (did not finish validation before T started validation) Database Implementation – Concurrency Control Yan Huang 31 start validate finish Exercise: U: RS(U)={B} WS(U)={D} T: RS(T)={A,B} WS(T)={A,C} W: RS(W)={A,D} WS(W)={A,C} V: RS(V)={B} WS(V)={D,E} Database Implementation – Concurrency Control Yan Huang 32 start validate finish Exercise: U: RS(U)={B} WS(U)={D} T: RS(T)={A,B} WS(T)={A,C} W: RS(W)={A,D} WS(W)={A,C} V: RS(V)={B} WS(V)={D,E} Database Implementation – Concurrency Control Yan Huang 33 start validate finish Exercise: U: RS(U)={B} WS(U)={D} T: RS(T)={A,B} WS(T)={A,C} W: RS(W)={A,D} WS(W)={A,C} V: RS(V)={B} WS(V)={D,E} Database Implementation – Concurrency Control Yan Huang 34 start validate finish Exercise: U: RS(U)={B} WS(U)={D} T: RS(T)={A,B} WS(T)={A,C} W is rolled bak W: RS(W)={A,D} WS(W)={A,C} V: RS(V)={B} WS(V)={D,E} Database Implementation – Concurrency Control Yan Huang 35