Concurrency Control II

advertisement
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
Download