concurrency control - stanford university · concurrency control + recovery beyond serializability...

70
Concurrency Control Instructor: Matei Zaharia cs245.stanford.edu

Upload: others

Post on 04-Aug-2020

19 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Concurrency Control

Instructor: Matei Zahariacs245.stanford.edu

Page 2: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

OutlineWhat makes a schedule serializable?Conflict serializability

Precedence graphsEnforcing serializability via 2-phase locking» Shared and exclusive locks» Lock tables and multi-level locking

Optimistic concurrency with validation

Concurrency control + recoveryBeyond serializabilityCS 245 2

Page 3: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Which Objects Do We Lock?

?

CS 245 3

Table A

Table B

...

Tuple ATuple BTuple C

...

Disk block

A

Disk block

B

...

DB DB DB

Idea: Multi-level locking

Page 4: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Example

CS 245 4

R1

t1t2 t3 t4

Page 5: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Example

CS 245 5

R1

t1t2 t3 t4

T1(IS)

T1(S)

Page 6: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Example

CS 245 6

R1

t1t2 t3 t4

T1(IS)

T1(S)

, T2(S)

Page 7: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Example 2

CS 245 7

R1

t1t2 t3 t4

T1(IS)

T1(S)

Page 8: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Example 2

CS 245 8

R1

t1t2 t3 t4

T1(IS)

T1(S)

, T2(IX)

T2(X)

Page 9: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Example 3

CS 245 9

R1

t1t2 t3 t4

T1(IS)

T1(S)

, T2(S), T3(IX)?

Page 10: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

compat RequestorIS IX S SIX X

ISHolder IX

SSIX

X

T T T T FFFFFFFFF

FFFTFTFTFFTT

CS 245 10

Multiple Granularity Locks

Page 11: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Parent Child can be lockedlocked in by same transaction in

ISIXSSIXX

P

C

IS, SIS, S, IX, X, SIXnoneX, IX, SIXnone

CS 245 11

Rules Within A Transaction

Page 12: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Multi-Granularity 2PL Rules1. Follow multi-granularity compat function2. Lock root of tree first, any mode3. Node Q can be locked by Ti in S or IS only if

parent(Q) locked by Ti in IX or IS4. Node Q can be locked by Ti in X, SIX, IX only if

parent(Q) locked by Ti in IX, SIX5. Ti is two-phase6. Ti can unlock node Q only if none of Q’s

children are locked by Ti

CS 245 12

Page 13: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Exercise:Can T2 access object f2.2 in X mode? What locks will T2 get?

CS 245 13

R1

t1t2 t3 t4T1(IX)

f2.1 f2.2 f3.1 f3.2

T1(IX)

T1(X)

Page 14: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Exercise:Can T2 access object f2.2 in X mode? What locks will T2 get?

CS 245 14

R1

t1t2 t3 t4T1(X)

f2.1 f2.2 f3.1 f3.2

T1(IX)

Page 15: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Exercise:Can T2 access object f3.1 in X mode? What locks will T2 get?

CS 245 15

R1

t1t2 t3 t4T1(S)

f2.1 f2.2 f3.1 f3.2

T1(IS)

Page 16: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Exercise:Can T2 access object f2.2 in S mode? What locks will T2 get?

CS 245 16

R1

t1t2 t3 t4T1(IX)

f2.1 f2.2 f3.1 f3.2

T1(SIX)

T1(X)

Page 17: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Exercise:Can T2 access object f2.2 in X mode? What locks will T2 get?

CS 245 17

R1

t1t2 t3 t4T1(IX)

f2.1 f2.2 f3.1 f3.2

T1(SIX)

T1(X)

Page 18: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Insert + Delete Operations

Insert

CS 245 18

A

Za

...

Page 19: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Changes to Locking Rules:

1. Get exclusive lock on A before deleting A

2. When Ti inserts an object A, Ti receives an exclusive lock on A

CS 245 19

Page 20: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Still Have Problem: Phantoms

Example: relation R (id, name,…)constraint: id is unique keyuse tuple locking

R id name ….o1 55 Smitho2 75 Jones

CS 245 20

Page 21: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

T1: Insert <12,Mary,…> into RT2: Insert <12,Sam,…> into R

T1 T2l-S1(o1) l-S2(o1)l-S1(o2) l-S2(o2)Check Constraint Check Constraint

Insert o3[12,Mary,..]Insert o4[12,Sam,..]

... ...

CS 245 21

Page 22: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Solution

Use multiple granularity tree

Before insert of node N,lock parent(N) in X mode

CS 245 22

R1

t1 t2 t3

Page 23: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Back to ExampleT1: Insert<12,Mary> T2: Insert<12,Sam>

T1 T2l-X1(R)

Check constraintInsert<12,Mary>U1(R)

l-X2(R)Check constraintOops! id=12 already in R!

l-X2(R) delayed

CS 245 23

Page 24: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Instead of Locking R, Can Use Index Nodes for Ranges

Example:

CS 245 24

...

...

...

R

Index100<id≤200

Index0<id≤100

id=2 id=5 id=107 id=109

Page 25: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

How Is Locking Implemented In Practice?Every system is different (e.g., may not even provide conflict serializable schedules)

But here is one (simplified) way ...

CS 245 25

Page 26: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Sample Locking System

1. Don’t ask transactions to request/release locks: just get the weakest lock for each action they perform

2. Hold all locks until the transaction commits

CS 245 26

#locks

time

Page 27: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Sample Locking System

Under the hood: lock manager that keeps track of which objects are locked» E.g. hash table

Also need good ways to block transactions until locks are available, and to find deadlocks

CS 245 27

Page 28: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

OutlineWhat makes a schedule serializable?Conflict serializability

Precedence graphsEnforcing serializability via 2-phase locking» Shared and exclusive locks» Lock tables and multi-level locking

Optimistic concurrency with validation

Concurrency control + recoveryBeyond serializabilityCS 245 28

Page 29: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Validation ApproachTransactions have 3 phases:

1. Read» Read all DB values needed» Write to temporary storage» No locking

2. Validate» Check whether schedule so far is serializable

3. Write» If validate OK, write to DB

CS 245 29

Page 30: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Key Idea

Make validation atomic

If the validation order is T1, T2, T3, …, then resulting schedule will be conflict equivalent to Ss = T1, T2, T3, …

CS 245 30

Page 31: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Implementing Validation

System keeps track of two sets:

FIN = transactions that have finished phase 3(write phase) and are all done

VAL = transactions that have successfullyfinished phase 2 (validation)

CS 245 31

Page 32: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Example That Validation Must Prevent:

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

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

CS 245 32

time

T2start

T2validated

T3validated

T3start

Ç≠ ∅

Page 33: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

T2finish

phase 3

Example That Validation Must Allow:

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

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

CS 245 33

time

T2start

T2validated

T3validated

T3start

Ç≠ ∅

Page 34: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Another Thing Validation Must Prevent:

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

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

time

T2validated

T3validated

finishT2

CS 245 34

Page 35: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

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

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

time

T2validated

T3validated

finishT2

BAD: w3(D) w2(D)

CS 245 35

Another Thing Validation Must Prevent:

Page 36: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

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

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

time

T2validated

T3validated

finishT2

CS 245 36

Another Thing Validation Must Allow:

Page 37: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Validation Rules for Tj:

when Tj starts phase 1: ignore(Tj) ¬ FIN

at Tj Validation:if Check(Tj) then

VAL ¬ VAL ∪ {Tj}do write phaseFIN ¬ FIN ∪ {Tj}

CS 245 37

Page 38: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Check(Tj)

for Ti Î VAL – ignore(Tj) doif (WS(Ti) ∩ RS(Tj) ≠ ∅ or

(Ti Ï FIN and WS(Ti) ∩ WS(Tj) ≠ ∅))then return false

return true

CS 245 38

Page 39: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

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

CS 245 39

Page 40: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Is Validation = 2PL?

CS 245 40

2PLVal

2PLVal

2PLVal

Val2PL

Page 41: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

S: w2(y) w1(x) w2(x)

Achievable with 2PL?

Achievable with validation?

CS 245 41

Page 42: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

S: w2(y) w1(x) w2(x)

S can be achieved with 2PL:l2(y) w2 (y) l1(x) w1(x) u1(x) l2(x) w2(x) u2(x) u2(y)

S cannot be achieved by validation:The validation point of T2, val2, must occur before w2(y) since transactions do not write to the database until after validation. Because of the conflict on x, val1 < val2, so we must have something like:

S: val1 val2 w2(y) w1(x) w2(x)

With the validation protocol, the writes of T2 should not start until T1 is all done with writes, which is not the case.

CS 245 42

Page 43: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Validation Subset of 2PL?Possible proof (Check!):» Let S be validation schedule» For each T in S insert lock/unlocks, get S’:

• At T start: request read locks for all of RS(T)• At T validation: request write locks for WS(T);

release read locks for read-only objects• At T end: release all write locks

» Clearly transactions well-formed and 2PL» Must show S’ is legal (next slide)

CS 245 43

Page 44: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Say S’ not legal (due to w-r conflict):S’: ... l1(x) w2(x) r1(x) val1 u1(x) ...» At val1: T2 not in Ignore(T1); T2 in VAL» T1 does not validate: WS(T2) Ç RS(T1) ¹ Æ» contradiction!

Say S’ not legal (due to w-w conflict):S’: ... val1 l1(x) w2(x) w1(x) u1(x) ...» Say T2 validates first (proof similar if T1 validates first)» At val1: T2 not in Ignore(T1); T2 in VAL» T1 does not validate:

T2 Ï FIN AND WS(T1) Ç WS(T2) ¹ Æ)» contradiction!

CS 245 44

Validation Subset of 2PL?

Page 45: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Is Validation = 2PL?

CS 245 45

2PLVal

2PLVal

2PLVal

Val2PL

Page 46: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

When to Use Validation?

Validation performs better than locking when:» Conflicts are rare» System resources are plentiful» Have tight latency constraints

CS 245 46

Page 47: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

OutlineWhat makes a schedule serializable?Conflict serializability

Precedence graphsEnforcing serializability via 2-phase locking» Shared and exclusive locks» Lock tables and multi-level locking

Optimistic concurrency with validation

Concurrency control + recoveryBeyond serializabilityCS 245 48

Page 48: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Example: Tj Ti

wj(A)ri(A)

Commit Ti

Abort Tj

Concurrency Control & Recovery

……

… ……

CS 245 49

Non-persistent commit (bad!)avoided byrecoverableschedules

Page 49: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Example: Tj Ti

wj(A)ri(A)wi(B)

Abort Tj[Commit Ti]

……

……

CS 245 50

Concurrency Control & Recovery

Cascading rollback (bad!)avoided byavoids-cascading-rollback (ACR)schedules

Page 50: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Core Problem

Schedule is conflict serializable

Tj Ti

But not recoverable

CS 245 51

Page 51: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

To Resolve This

Need to mark the “final” decision for each transaction in our schedules:» Commit decision: system guarantees

transaction will or has completed» Abort decision: system guarantees

transaction will or has been rolled back

CS 245 52

Page 52: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Model This as 2 New Actions:

ci = transaction Ti commits

ai = transaction Ti aborts

CS 245 53

Page 53: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

......

......

Tj Ti

wj(A)ri(A)

ci ¬ can we commit here?

Back to Example

CS 245 54

Page 54: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

DefinitionTi reads from Tj in S (Tj ÞS Ti) if:

1. wj(A) <S ri(A)

2. aj <S r(A) (<S: does not precede)

3. If wj(A) <S wk(A) <S ri(A) then ak <S ri(A)

CS 245 55

Page 55: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Definition

Schedule S is recoverable if

whenever Tj ÞS Ti and j ¹ i and ci Î S

then cj <S ci

CS 245 56

Page 56: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Notes

In all transactions, reads and writes must precede commits or abortsó If ci Î Ti, then ri(A) < ai, wi(A) < ai

ó If ai Î Ti, then ri(A) < ai, wi(A) < ai

Also, just one of ci, ai per transaction

CS 245 57

Page 57: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

How to Achieve Recoverable Schedules?

CS 245 58

Page 58: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

With 2PL, Hold Write Locks Until Commit (“Strict 2PL”)

Tj Ti

Wj(A)

Cj

uj(A)ri(A)

CS 245 59

......

......

......

Page 59: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

With Validation, No Change!

Each transaction’s validation point is its commit point, and only write after

CS 245 60

Page 60: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

DefinitionsS is recoverable if each transaction commits only after all transactions from which it read have committed

S avoids cascading rollback if each transaction may read only those values written by committed transactions

S is strict if each transaction may read and write only items previously written by committed transactions (≡ strict 2PL)CS 245 61

Page 61: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Relationship of Recoverable, ACR & Strict Schedules

Avoids cascading rollback

Recoverable

ACR

Strict

Serial

CS 245 62

Page 62: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

ExamplesRecoverable:

w1(A) w1(B) w2(A) r2(B) c1 c2

Avoids Cascading Rollback:w1(A) w1(B) w2(A) c1 r2(B) c2

Strict:w1(A) w1(B) c1 w2(A) r2(B) c2

CS 245 63

Page 63: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Recoverability & Serializability

Every strict schedule is serializable

Proof: equivalent to serial schedule based on the order of commit points» Only read/write from previously committed

transactions

CS 245 64

Page 64: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Recoverability & Serializability

CS 245 65

Page 65: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

CS 245

OutlineWhat makes a schedule serializable?Conflict serializability

Precedence graphsEnforcing serializability via 2-phase locking» Shared and exclusive locks» Lock tables and multi-level locking

Optimistic concurrency with validation

Concurrency control + recoveryBeyond serializability

66

Page 66: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Weaker Isolation Levels

Dirty reads: Let transactions read values written by other uncommitted transactions» Equivalent to having long-duration write locks,

but no read locks

Read committed: Can only read values from committed transactions, but they may change» Equivalent to having long-duration write locks

(X) and short-duration read locks (S)

CS 245 67

Page 67: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Weaker Isolation Levels

Repeatable reads: Can only read values from committed transactions, and each value will be the same if read again» Equivalent to having long-duration read &

write locks (X/S) but not table locks for insert

Remaining problem: phantoms!

CS 245 68

Page 68: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Weaker Isolation Levels

Snapshot isolation: Each transaction sees a consistent snapshot of the whole DB (as if we saved all committed values when it began)» Often implemented with multi-version

concurrency control (MVCC)

Still has some anomalies! Example?

CS 245 69

Page 69: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Weaker Isolation Levels

Snapshot isolation: Each transaction sees a consistent snapshot of the whole DB (as if we saved all committed values when it began)» Often implemented with multi-version

concurrency control (MVCC)

Write skew anomaly: txns write different values» Constraint: A+B ≥ 0» T1: read A, B; if A+B ≥ 1, subtract 1 from A» T2: read A, B; if A+B ≥ 1, subtract 1 from B» Problem: what if we started with A=1, B=0?

CS 245 70

Page 70: Concurrency Control - Stanford University · Concurrency control + recovery Beyond serializability CS 245 28. Validation Approach Transactions have 3 phases: 1. Read »Read all DB

Interesting Fact

Oracle calls their snapshot isolation level “serializable”, and doesn’t provide serializable

Many other systems provide snapshot isolation as an option» MySQL, PostgreSQL, MongoDB, SQL Server

CS 245 71