Cs4432concurrency control1 CS4432: Database Systems II Concurrency Control

Preview:

Citation preview

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?