1 concurrency control iii dead lock time stamp ordering validation scheme

35
1 Concurrency Control III Dead Lock Time Stamp Ordering Validation Scheme

Upload: kailyn-drey

Post on 14-Dec-2015

217 views

Category:

Documents


1 download

TRANSCRIPT

1

Concurrency Control III

Dead Lock

Time Stamp Ordering

Validation Scheme

Database Implementation – Concurrency Control Yan

Huang 2

Learning Objectives

Dealing with Deadlock and Starvation Time Stamp Ordering Technique Validation

Database Implementation – Concurrency Control Yan

Huang 3

Deadlocks Detection

Wait-for graph Prevention

Resource ordering Timeout Wait-die Wound-wait

Database Implementation – Concurrency Control Yan

Huang 4

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

Database Implementation – Concurrency Control Yan

Huang 5

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 6

Timeout

If transaction waits more than L sec., roll it back!

Simple scheme Hard to select L

Database Implementation – Concurrency Control Yan

Huang 7

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 8

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

Database Implementation – Concurrency Control Yan

Huang 9

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 10

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

Database Implementation – Concurrency Control Yan

Huang 11

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 12

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 13

Timestamp System time when transactions starts An increasing unique number given to each stransaction

Denoted by ts(Ti)

Database Implementation – Concurrency Control Yan

Huang 14

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 15

ExampleAssuming: 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

Database Implementation – Concurrency Control Yan

Huang 16

ExampleAssuming: ts(T1) = 100, ts(T2) = 200, ts(T3) = 300

T1 T2 T3

R(x);

W(y);W(y);

R (y);R (y);

W(z);W(z);

R(x); R(x);

W(z);W(z);

R(y); R(y);

W(x);W(x);

x y z

RS=100 RS=-1 RS=-1

WS=-1 WS=-1 WS=-1

Database Implementation – Concurrency Control Yan

Huang 17

ExampleAssuming: ts(T1) = 100, ts(T2) = 200, ts(T3) = 300

T1 T2 T3

R(x);

W(y);

R (y);R (y);

W(z);W(z);

R(x); R(x);

W(z);W(z);

R(y); R(y);

W(x);W(x);

x y z

RS=100 RS=-1 RS=-1

WS=-1 WS=100 WS=-1

Database Implementation – Concurrency Control Yan

Huang 18

ExampleAssuming: ts(T1) = 100, ts(T2) = 200, ts(T3) = 300

T1 T2 T3

R(x);

W(y);

R (y);

W(z);W(z);

R(x); R(x);

W(z);W(z);

R(y); R(y);

W(x);W(x);

x y z

RS=100 RS=200 RS=-1

WS=-1 WS=100 WS=-1

Database Implementation – Concurrency Control Yan

Huang 19

ExampleAssuming: ts(T1) = 100, ts(T2) = 200, ts(T3) = 300

T1 T2 T3

R(x);

W(y);

R (y);

W(z);

R(x); R(x);

W(z);W(z);

R(y); R(y);

W(x);W(x);

x y z

RS=100 RS=200 RS=-1

WS=-1 WS=100 WS=300

Database Implementation – Concurrency Control Yan

Huang 20

ExampleAssuming: ts(T1) = 100, ts(T2) = 200, ts(T3) = 300

T1 T2 T3

R(x);

W(y);

R (y);

W(z);

R(x);

W(z);W(z);

R(y); R(y);

W(x);W(x);

x y z

RS=200 RS=200 RS=-1

WS=-1 WS=100 WS=300

Database Implementation – Concurrency Control Yan

Huang 21

ExampleAssuming: 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); R(y);

W(x);W(x);

x y z

RS=200 RS=200 RS=-1

WS=-1 WS=100 WS=300

T1 is rolled back

Database Implementation – Concurrency Control Yan

Huang 22

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 23

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 24

Time stamps of a transaction Ti Start(Ti) Validation(Ti) Finish(Ti)

Database Implementation – Concurrency Control Yan

Huang 25

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 26

Schedule

T1 T2

Read(A)

A A+100;

Read(A)

A Ax2;

Read(B);B B+100

validate

Write(A)

Write(B);

Read(B)

B Bx2;

validate

Write(A)

Write(B);

Database Implementation – Concurrency Control Yan

Huang 27

Example of what validation must prevent:

RS(T2)={B} RS(T3)={A,B}

WS(T2)={B,D} WS(T3)={C}

time

T2

start

T2

validate

T3

validateT3

start

=

T2

finishes

T3

finishes

Database Implementation – Concurrency Control Yan

Huang 28

T2

finishphase 3

Example of what validation must prevent:

RS(T2)={B} RS(T3)={A,B}

WS(T2)={B,D} WS(T3)={C}

time

T2

start

T2

validated

T3

validatedT3

start

=

allow

T3

start

Database Implementation – Concurrency Control Yan

Huang 29

Another thing validation must prevent:RS(T2)={A} RS(T3)={A,B}

WS(T2)={D,E} WS(T3)={C,D}

time

T2

validatedT3

validated

finish

T2BAD: w3(D) w2(D)

Database Implementation – Concurrency Control Yan

Huang 30

finish

T2

Another thing validation must prevent:RS(T2)={A} RS(T3)={A,B}

WS(T2)={D,E} WS(T3)={C,D}

time

T2

validatedT3

validated

allow

finish

T2

Database Implementation – Concurrency Control Yan

Huang 31

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 32

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

Database Implementation – Concurrency Control Yan

Huang 33

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

Database Implementation – Concurrency Control Yan

Huang 34

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

Database Implementation – Concurrency Control Yan

Huang 35

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

W is rolled bak