Upload
manishbhardwaj8131
View
233
Download
0
Embed Size (px)
Citation preview
7/27/2019 Concurrency Control II
1/51
1
Concurrency Control II
More on Two Phase Locking
Time Stamp OrderingValidation Scheme
7/27/2019 Concurrency Control II
2/51
Database ImplementationConcurrency Control Yan Huang 2
Learning Objectives
Variations of two phase locking
Dealing with Deadlock and Starvation
Time Stamp Ordering Technique Validation
7/27/2019 Concurrency Control II
3/51
Database ImplementationConcurrency Control Yan Huang 3
Schedules
Interleaved (or non-interleaved) actions from several
transactions
A schedule is good if it can be transformed into one of
the serial schedules by switching two consecutive non-
conflict actions
Weve learned 2PL to achieve serializability
It is a pessimistic scheme
7/27/2019 Concurrency Control II
4/51
Database ImplementationConcurrency Control Yan Huang 4
Recall
2PL (two phase locking)
Locks of Ti
time
growing shrinking
Each transaction has to follow, no locking anymoreafter the first unlocking
7/27/2019 Concurrency Control II
5/51
Database ImplementationConcurrency Control Yan Huang 5
Why 2PL serializability?
Acyclic precedence graph = serializability
Basic idea:
No cycle in precedence graph
Because
if there is a arc from Ti to Tj in precedence graph, the first unlocking
of Ti precede the first unlocking of Tj (proof details in ccI notes)
If there is circle, you will have Ti < Ti
7/27/2019 Concurrency Control II
6/51
Database ImplementationConcurrency Control Yan Huang 6
Who will follow 2PL in practice?
Looks like it is DB application developers job.
But, they can not be trusted and too much work
Checking conformity of every transaction is costly
In practice, CC subsystems of DBMS take over the
responsibility
7/27/2019 Concurrency Control II
7/51
Database ImplementationConcurrency Control Yan Huang 7
Variations of 2PL
Basic 2PL
Conservative 2PL
Strict 2PL Rigorous 2PL
7/27/2019 Concurrency Control II
8/51
Database ImplementationConcurrency Control Yan Huang 8
Basic 2PL
2PL with binary locks
Covered in last class
7/27/2019 Concurrency Control II
9/51
Database ImplementationConcurrency Control Yan Huang 9
Shared locks
So far:
S = ...l1(A) r1(A) u1(A) l2(A) r2(A) u2(A)
Do not conflict
Instead:
S=... ls1(A) r1(A) ls2(A) r2(A) . us1(A) us2(A)
7/27/2019 Concurrency Control II
10/51
Database ImplementationConcurrency Control Yan Huang 10
Lock actions
l-ti(A): lock A in t mode (t is S or X)
u-ti(A): unlock t mode (t is S or X)
Shorthand:
ui(A): unlock whatever modes
Ti has locked A
7/27/2019 Concurrency Control II
11/51
Database ImplementationConcurrency Control Yan Huang 11
Well formed transactions
Ti =... l-S1(A) r1(A) u1 (A)
Ti =... l-X1(A) w1(A) u1 (A)
7/27/2019 Concurrency Control II
12/51
Database ImplementationConcurrency Control Yan Huang 12
What about transactions that read and write same
object?
Option 1: Request exclusive lock
Ti = ...l-X1(A) r1(A) ... w1(A) ... u1(A)
7/27/2019 Concurrency Control II
13/51
Database ImplementationConcurrency Control Yan Huang 13
Option 2: Upgrade(E.g., need to read, but dont know if will write)
Ti=... l-S1(A) r1(A) ...l-X1(A) w1(A) ...u1(A)
Think of- Get 2nd lock on A, or- Drop S, get X lock
What about transactions that read andwrite same object?
7/27/2019 Concurrency Control II
14/51
Database ImplementationConcurrency Control Yan Huang 14
Compatibility matrix
Comp S X
S true false
X false false
7/27/2019 Concurrency Control II
15/51
Database ImplementationConcurrency Control Yan Huang 15
Schedule
T1 T2l-s1(A);Read(A)
A A+100;Write(A)
l-x1(B); u1(A)
l-s2(A);Read(A)
A Ax2;Write(A); l-x2(B)
Read(B);B B+100
Write(B); u1(B)
l-x2(B); u2(A);Read(B)
B Bx2;Write(B);u2(B);
delayed
7/27/2019 Concurrency Control II
16/51
Database ImplementationConcurrency Control Yan Huang 16
Conservative 2PL
Lock all items it needs then transaction starts execution
If any locks can not be obtained, then do not lock anything
Difficult but deadlock free
growingshrinkinglocks
time
first action starts
7/27/2019 Concurrency Control II
17/51
Database ImplementationConcurrency Control Yan Huang 17
Strict 2PL
T does not release any write locks until it commits or
aborts
Good for recoverability
Since reads or writes on what T writes
Deadlock free?
growing
shrinkinglocks
time
T commits or aborts
First write unlock
7/27/2019 Concurrency Control II
18/51
Database ImplementationConcurrency Control Yan Huang 18
Rigorous 2PL
T does not release any locks until it commits or aborts
Easy to implement
Deadlock free?
growingshrinkinglocks
time
T commits or aborts
7/27/2019 Concurrency Control II
19/51
Database ImplementationConcurrency Control Yan Huang 19
2PL
Does basic 2PL guarantee serializability?
Does conservative 2PL guarantee serializability?
Does strict 2PL guarantee serializability?
Does rigorous 2PL guarantee serializability?
7/27/2019 Concurrency Control II
20/51
Database ImplementationConcurrency Control Yan Huang 20
Compare variations of 2PL
Deadlock
Only conservative 2PLis deadlock free
Q: give a schedule of two transactions following 2PL but
result in deadlock.
7/27/2019 Concurrency Control II
21/51
Database ImplementationConcurrency Control Yan Huang 21
Exercises:
S1: r1(y)r1(x)w1(x)w2(x)w2(y)
S2: r1(y)r3(x)w1(x)w3(x)w2(y)w2(x)
S3: r3(y)w1(x)w3(x)r1(z)w2(y)w2(x)
Assuming binary lock right before read or write; and rigorous
2PL (release all locks right after last operation), are S1,
S2,and S3 possible?
7/27/2019 Concurrency Control II
22/51
Database ImplementationConcurrency Control Yan Huang 22
Deadlocks Detection
Wait-for graph
Prevention
Resource ordering Timeout
Wait-die
Wound-wait
7/27/2019 Concurrency Control II
23/51
Database ImplementationConcurrency Control Yan Huang 23
Deadlock Detection
Build Wait-For graph
Use lock table structures
Build incrementally or periodically
When cycle found, rollback victim
T1
T3
T2
T6
T5
T4T7
7/27/2019 Concurrency Control II
24/51
Database ImplementationConcurrency Control Yan Huang 24
Resource Ordering
Order all elements A1, A2, , An
A transaction T can lock Ai after Aj only if i > j
Problem : Ordered lock requests notrealistic in most cases
7/27/2019 Concurrency Control II
25/51
Database ImplementationConcurrency Control Yan Huang 25
Timeout
If transaction waits more than L sec.,
roll it back!
Simple scheme
Hard to select L
7/27/2019 Concurrency Control II
26/51
Database ImplementationConcurrency Control Yan Huang 26
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
7/27/2019 Concurrency Control II
27/51
Database ImplementationConcurrency Control Yan Huang 27
T1(ts =10)
T2(ts =20)
T3(ts =25)
wait
wait
Example:
wait?
Very high level: only older ones have the privilege to wait,younger ones die if they attempt to wait for older ones
7/27/2019 Concurrency Control II
28/51
Database ImplementationConcurrency Control Yan Huang 28
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
7/27/2019 Concurrency Control II
29/51
Database ImplementationConcurrency Control Yan Huang 29
T1(ts =25)
T2(ts =20)
T3(ts =10)
wait
wait
Example:
wait
Very high level: younger ones wait; older ones kill (wound)younger ones who hold needed locks
7/27/2019 Concurrency Control II
30/51
Database ImplementationConcurrency Control Yan Huang 30
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?
7/27/2019 Concurrency Control II
31/51
Database ImplementationConcurrency Control Yan Huang 31
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
7/27/2019 Concurrency Control II
32/51
Database ImplementationConcurrency Control Yan Huang 32
Timestamp
System time when transactions starts
An increasing unique number given to each stransaction
Denoted by ts(Ti)
7/27/2019 Concurrency Control II
33/51
Database ImplementationConcurrency Control Yan Huang 33
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
7/27/2019 Concurrency Control II
34/51
Database ImplementationConcurrency Control Yan Huang 34
Example
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);
x y z
RS=-1 RS=-1 RS=-1
WS=-1 WS=-1 WS=-1
7/27/2019 Concurrency Control II
35/51
Database ImplementationConcurrency Control Yan Huang 35
Example
Assuming: ts(T1) = 100, ts(T2) = 200, ts(T3) = 300
T1 T2 T3
R(x);
x y z
RS=100 RS=-1 RS=-1
WS=-1 WS=-1 WS=-1
7/27/2019 Concurrency Control II
36/51
Database ImplementationConcurrency Control Yan Huang 36
Example
Assuming: ts(T1) = 100, ts(T2) = 200, ts(T3) = 300
T1 T2 T3
R(x);
W(y);
x y z
RS=100 RS=-1 RS=-1
WS=-1 WS=100 WS=-1
7/27/2019 Concurrency Control II
37/51
Database ImplementationConcurrency Control Yan Huang 37
Example
Assuming: ts(T1) = 100, ts(T2) = 200, ts(T3) = 300
T1 T2 T3
R(x);
W(y);
R (y);
x y z
RS=100 RS=200 RS=-1
WS=-1 WS=100 WS=-1
7/27/2019 Concurrency Control II
38/51
Database ImplementationConcurrency Control Yan Huang 38
Example
Assuming: ts(T1) = 100, ts(T2) = 200, ts(T3) = 300
T1 T2 T3
R(x);
W(y);
R (y);
W(z);
x y z
RS=100 RS=200 RS=-1
WS=-1 WS=100 WS=300
7/27/2019 Concurrency Control II
39/51
Database ImplementationConcurrency Control Yan Huang 39
Example
Assuming: ts(T1) = 100, ts(T2) = 200, ts(T3) = 300
T1 T2 T3
R(x);
W(y);
R (y);
W(z);
R(x);
x y z
RS=200 RS=200 RS=-1
WS=-1 WS=100 WS=300
7/27/2019 Concurrency Control II
40/51
Database ImplementationConcurrency Control Yan Huang 40
Example
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);
x y z
RS=200 RS=200 RS=-1
WS=-1 WS=100 WS=300
T1 is rolled back
7/27/2019 Concurrency Control II
41/51
Database ImplementationConcurrency Control Yan Huang 41
Example
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);
x y z
RS=200 RS=200 RS=-1
WS=-1 WS=100 WS=300
T1 is rolled back
What happen to RS and WS?
7/27/2019 Concurrency Control II
42/51
Database ImplementationConcurrency Control Yan Huang 42
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
later
7/27/2019 Concurrency Control II
43/51
Database ImplementationConcurrency Control Yan Huang 43
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
7/27/2019 Concurrency Control II
44/51
Database ImplementationConcurrency Control Yan Huang 44
Key idea
Make validation atomic If T1, T2, T3, is validation order, then resulting
schedule will be conflict equivalent to Ss = T1 T2
T3...
7/27/2019 Concurrency Control II
45/51
Database ImplementationConcurrency Control Yan Huang 45
To implement validation, system keeps two sets:
FIN = transactions that have finished
phase 3 (and are all done)
VAL = transactions that have
successfully finished phase 2
(validation)
7/27/2019 Concurrency Control II
46/51
Database ImplementationConcurrency Control Yan Huang 46
Example of what validation must prevent:
RS(T2)={B} RS(T3)={A,B}
WS(T2)={B,D} WS(T3)={C}
time
T2start
T2validated
T3validated
T3start
=
7/27/2019 Concurrency Control II
47/51
Database ImplementationConcurrency Control Yan Huang 47
T2
finishphase 3
Example of what validation must prevent:
RS(T2)={B} RS(T3)={A,B}
WS(T2)={B,D} WS(T3)={C}
time
T2start
T2validated
T3validated
T3start
=
allow
T3start
7/27/2019 Concurrency Control II
48/51
Database ImplementationConcurrency Control Yan Huang 48
Another thing validation must prevent:
RS(T2)={A} RS(T3)={A,B}WS(T2)={D,E} WS(T3)={C,D}
time
T2validated
T3validated
finish
T2
BAD: w3(D) w2(D)
ll
7/27/2019 Concurrency Control II
49/51
Database ImplementationConcurrency Control Yan Huang 49
finish
T2
Another thing validation must prevent:
RS(T2)={A} RS(T3)={A,B}WS(T2)={D,E} WS(T3)={C,D}
time
T2validated
T3validated
allow
finish
T2
7/27/2019 Concurrency Control II
50/51
Database ImplementationConcurrency Control Yan Huang 50
Validation Rule
When start validating T
Check RS(T) WS(U) is empty for U that started but did
not finish validation before T started
Check WS(T) WS(U) is empty for any U that started butdid not finish validation T start validation
start
7/27/2019 Concurrency Control II
51/51
Exercise:
T: RS(T)={A,B}WS(T)={A,C}
V: RS(V)={B}WS(V)={D,E}
U: RS(U)={B}WS(U)={D}
W: RS(W)={A,D}WS(W)={A,C}
startvalidatefinish