Concurrency Control II
Download
Report
Transcript Concurrency Control II
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