Cs4432concurrency control1 CS4432: Database Systems II Concurrency Control.
-
date post
22-Dec-2015 -
Category
Documents
-
view
244 -
download
0
Transcript of Cs4432concurrency control1 CS4432: Database Systems II Concurrency Control.
cs4432 concurrency control 1
CS4432: Database Systems II
Concurrency Control
cs4432 concurrency control 2
Chapter 18 Concurrency Control
T1 T2 … Tn
DB(consistencyconstraints)
cs4432 concurrency control 3
Example:
T1: Read(A) T2: Read(A)A A+100 A A2Write(A) Write(A)Read(B) Read(B)B B+100 B B2Write(B) Write(B)
Constraint: A=B
cs4432 concurrency control 4
A schedule
An ordering of operations inside one or more transactions over
time
Why interleave operations?
cs4432 concurrency control 5
Schedule A
T1 T2Read(A); A A+100Write(A);Read(B); B B+100;Write(B);
Read(A);A A2;
Write(A);
Read(B);B B2;
Write(B);
A B25 25
125
125
250
250250 250
cs4432 concurrency control 6
Schedule B
T1 T2
Read(A);A A2;
Write(A);
Read(B);B B2;
Write(B);Read(A); A A+100Write(A);Read(B); B B+100;Write(B);
A B25 25
50
50
150
150150 150
cs4432 concurrency control 7
Serial Schedules !
• Any serial schedule is “good”.
cs4432 concurrency control 8
Interleave Transactions
ina Schedule?
cs4432 concurrency control 9
Schedule C
T1 T2Read(A); A A+100Write(A);
Read(A);A A2;
Write(A);Read(B); B B+100;Write(B);
Read(B);B B2;
Write(B);
A B25 25
125
250
125
250250 250
cs4432 concurrency control 10
Schedule D
T1 T2Read(A); A A+100Write(A);
Read(A);A A2;
Write(A);
Read(B);B B2;
Write(B);Read(B); B B+100;Write(B);
A B25 25
125
250
50
150250 150
cs4432 concurrency control 11
Schedule E
T1 T2’Read(A); A A+100Write(A);
Read(A);A A1;
Write(A);
Read(B);B B1;
Write(B);Read(B); B B+100;Write(B);
A B25 25
125
125
25
125125 125
Same as Schedule Dbut with new T2’
cs4432 concurrency control 12
What is a ‘good’ schedule?
cs4432 concurrency control 13
• We want schedules that are “good” regardless of :
• initial state and• transaction semantics
• Hence we consider only :– order of read/writes
Example: Sc=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)
cs4432 concurrency control 14
Remember Schedule C
T1 T2Read(A); A A+100Write(A);
Read(A);A A2;Write(A);
Read(B); B B+100;Write(B);
Read(B);B B2;Write(B);
cs4432 concurrency control 15
Sc’=r1(A)w1(A) r1(B)w1(B)r2(A)w2(A)r2(B)w2(B)
T1 T2
Example: Sc=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w
2(B)
cs4432 concurrency control 16
Now Let’s Try that for Schedule D !!!
T1 T2Read(A); A A+100Write(A);
Read(A);A A2;Write(A);
Read(B);B B2;Write(B);
Read(B); B B+100;Write(B);
cs4432 concurrency control 17
Now for Sd:Sd=r1(A)w1(A)r2(A)w2(A)
r2(B)w2(B)r1(B)w1(B)
Sd=r1(A)w1(A) r1(B)w1(B)r2(A)w2(A)r2(B)w2(B)
cs4432 concurrency control 18
Or, let’s try for Sd:Sd=r1(A)w1(A)r2(A)w2(A)
r2(B)w2(B)r1(B)w1(B)
Sd=r2(A)w2(A)r2(B)w2(B) r1(A)w1(A)r1(B)w1(B)
cs4432 concurrency control 19
In short, Schedule D cannot be “fixed” :Sd=r1(A)w1(A)r2(A)w2(A)
r2(B)w2(B)r1(B)w1(B)
• as a matter of fact, there seems to
be no safe way to transform this Sd
into an equivalent serial schedule !?
cs4432 concurrency control 20
Sd cannot be rearrangedinto a serial
scheduleSd is not “equivalent” to
any serial scheduleSd is “bad”
We note about schedule D:• T2 T1
• T1 T2T1 T2
cs4432 concurrency control 21
Returning to Sc
Sc=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)
T1 T2 T1 T2
no cycles Sc is “equivalent” to aserial schedule,I.e., in this case
(T1,T2).
cs4432 concurrency control 22
Concepts
Transaction: sequence of ri(x), wi(x) actionsConflicting actions: read/write on same resource A:
r1(A) w2(A) w1(A)
w2(A) r1(A) w2(A)
Schedule: represents chronological order in which actions are executed
Serial schedule: no interleaving of trans/actions
Anomalies with Interleaving Reading Uncommitted Data (WR Conflicts, “dirty reads”):
e.g. T1: A+100, B+100, T2: A*1.06, B*1.06
T1: R(A), W(A), R(B), W(B), AbortT2: R(A), W(A), C
T1: R(A), R(A), W(A), CT2: R(A), W(A), C
Unrepeatable Reads (RW Conflicts): E.g., T1: R(A), check if A >0, decrement, T2: R(A), decrement
Overwriting Uncommitted Data (WW Conflicts):
T1: W(A), W(B), CT2: W(A), W(B), C
cs4432 concurrency control 24
Definition
S1, S2 are conflict equivalent schedulesif S1 can be transformed into S2 by a series of swaps on non-conflicting actions.
cs4432 concurrency control 25
Definition
A schedule is conflict serializable if it is conflict equivalent to some serial schedule.
cs4432 concurrency control 26
Answer: A Precedence Graph !
How determine this ?
cs4432 concurrency control 27
Nodes: transactions in SArcs: Ti Tj whenever
- pi(A), qj(A) are actions in S- pi(A) <S qj(A)
- at least one of pi, qj is a write
Precedence graph P(S) (S is
schedule)
cs4432 concurrency control 28
Exercise:
• What is P(S) forS = w3(A) w2(C) r1(A) w1(B) r1(C) w2(A) r4(A) w4(D)
• Is S conflict-serializable?
cs4432 concurrency control 29
Another Exercise:
• What is P(S) forS = w1(A) r2(A) r3(A) w4(A) ?
• Is S conflict-serializable?
cs4432 concurrency control 30
Lemma
S1, S2 conflict equivalent P(S1)=P(S2)
Proof:Assume P(S1) P(S2) Ti: Ti Tj in S1 and not in S2
S1 = …pi(A)... qj(A)… pi, qj
S2 = …qj(A)…pi(A)... conflict
S1, S2 not conflict equivalent
cs4432 concurrency control 31
Note: P(S1)=P(S2) S1, S2 conflict equivalent
Counter example:
S1=w1(A) r2(A) w2(B) r1(B) S2=r2(A) w1(A) r1(B) w2(B)
cs4432 concurrency control 32
Theorem
P(S1) acyclic S1 conflict serializable
() Assume S1 is conflict serializable Ss: Ss, S1 conflict equivalent P(Ss) = P(S1)
P(S1) acyclic since P(Ss) is acyclic
cs4432 concurrency control 33
() Assume P(S1) is acyclicTransform S1 as follows:(1) Take T1 to be transaction with no incident arcs(2) Move all T1 actions to the front
S1 = ……. qj(A)…….p1(A)…..
(3) we now have S1 = < T1 actions ><... rest ...>(4) repeat above steps to serialize rest!
T1
T2 T3
T4
Theorem
P(S1) acyclic S1 conflict serializable
cs4432 concurrency control 34
How to enforce serializable schedules?
cs4432 concurrency control 35
How to enforce serializable schedules?
Option 1: try all possible swaps of non-conflicting operation pairs to determine if the schedule can be turned into a serial one, I.e., if the schedule is ‘good’.
cs4432 concurrency control 36
How to enforce serializable schedules?
Option 2: run system, recording P(S);
at end of day, check for P(S) cycles and declare if
execution was good
cs4432 concurrency control 37
Option 3: prevent P(S) cycles from occurring T1 T2 ….. Tn
Scheduler
DB
How to enforce serializable schedules?
cs4432 concurrency control 38
A locking protocol
Two new actions:lock (exclusive): li (A)
unlock: ui (A)
scheduler
T1 T2
locktable
cs4432 concurrency control 39
Rule #1: Well-formed transactions
Ti: … li(A) … pi(A) … ui(A) ...
cs4432 concurrency control 40
Rule #2 Legal scheduler
S = …….. li(A) ………... ui(A) ……...
no lj(A)
cs4432 concurrency control 41
• What schedules are legal?What transactions are well-formed?S1 = l1(A)l1(B)r1(A)w1(B)l2(B)u1(A)u1(B)r2(B)w2(B)u2(B)l3(B)r3(B)u3(B)
S2 = l1(A)r1(A)w1(B)u1(A)u1(B)l2(B)r2(B)w2(B)l3(B)r3(B)u3(B)
S3 = l1(A)r1(A)u1(A)l1(B)w1(B)u1(B)l2(B)r2(B)w2(B)u2(B)l3(B)r3(B)u3(B)
Exercise:
cs4432 concurrency control 42
• What schedules are legal?What transactions are well-formed?S1 = l1(A)l1(B)r1(A)w1(B)l2(B)u1(A)u1(B)r2(B)w2(B)u2(B)l3(B)r3(B)u3(B)
S2 = l1(A)r1(A)w1(B)u1(A)u1(B)l2(B)r2(B)w2(B)l3(B)r3(B)u3(B)
S3 = l1(A)r1(A)u1(A)l1(B)w1(B)u1(B)l2(B)r2(B)w2(B)u2(B)l3(B)r3(B)u3(B)
Exercise:
cs4432 concurrency control 43
Schedule F : Adding locking ???
T1 T2l1(A);Read(A)A A+100;Write(A);u1(A)
l2(A);Read(A)A Ax2;Write(A);u2(A)l2(B);Read(B)B Bx2;Write(B);u2(B)
l1(B);Read(B)B B+100;Write(B);u1(B)
cs4432 concurrency control 44
Schedule F
T1 T2 25 25
l1(A);Read(A)A A+100;Write(A);u1(A) 125
l2(A);Read(A)A Ax2;Write(A);u2(A) 250l2(B);Read(B)B Bx2;Write(B);u2(B)
50l1(B);Read(B)B B+100;Write(B);u1(B)
150 250
150
A B
cs4432 concurrency control 45
Rule #3 Two phase locking (2PL)
for transactions
Ti = ……. li(A) ………... ui(A) ……...
no unlocks no locks
cs4432 concurrency control 46
# locksheld byTi
Time Growing Shrinking Phase Phase
cs4432 concurrency control 47
Schedule F : Does it follow 2PL ?
T1 T2l1(A);Read(A)A A+100;Write(A);u1(A)
l2(A);Read(A)A Ax2;Write(A);u2(A)l2(B);Read(B)B Bx2;Write(B);u2(B)
l1(B);Read(B)B B+100;Write(B);u1(B)
cs4432 concurrency control 48
Schedule G
T1 T2l1(A);Read(A)A A+100;Write(A)l1(B); u1(A)
l2(A);Read(A) A Ax2;Write(A);
cs4432 concurrency control 49
Schedule G
T1 T2l1(A);Read(A)A A+100;Write(A)l1(B); u1(A)
l2(A);Read(A) A Ax2;Write(A);ll22(B)(B)
delayed
cs4432 concurrency control 50
Schedule G
T1 T2l1(A);Read(A)A A+100;Write(A)l1(B); u1(A)
l2(A);Read(A) A Ax2;Write(A);ll22(B)(B)
Read(B);B B+100Write(B); u1(B)
delayed
cs4432 concurrency control 51
Schedule G
T1 T2l1(A);Read(A)A A+100;Write(A)l1(B); u1(A)
l2(A);Read(A) A Ax2;Write(A);ll22(B)(B)
Read(B);B B+100Write(B); u1(B)
l2(B); u2(A);Read(B) B Bx2;Write(B);u2(B);
delayed
cs4432 concurrency control 52
We Got the GOOD Schedule !!!!
T1 T2Read(A); A A+100Write(A);
Read(A);A A2;Write(A);
Read(B); B B+100;Write(B);
Read(B);B B2;Write(B);
A B25 25
125
250
125
250250 250
cs4432 concurrency control 53
Schedule H (T2 reversed)
T1 T2l1(A); Read(A) l2(B);Read(B)A A+100;Write(A) B Bx2;Write(B)… …
cs4432 concurrency control 54
Schedule H (T2 reversed)
T1 T2l1(A); Read(A) l2(B);Read(B)A A+100;Write(A) B Bx2;Write(B)
ll11(B)(B) l l22(A)(A)delayeddelayed
cs4432 concurrency control 55
• SUMMARY:– 2PL is commonly used solution for
concurrency
• NOTE:– But 2PL does not prevent deadlocks
• NEXT:– What are we going to do about deadlocks?