introduction to data management cse 414€¦ · • serial and serializable schedules (18.1) •...

49
Introduction to Data Management CSE 414 Lecture 22: Transactions CSE 414 - Winter 2014 1

Upload: others

Post on 01-Jun-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Introduction to Data Management CSE 414

Lecture 22: Transactions

CSE 414 - Winter 2014 1

Page 2: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Announcements

•  HW6 is due tonight, 11 pm

•  New webquiz out today, due next Monday

•  HW7 posted tonight: –  Some Java programming required –  Plus connection to SQL Azure

•  Sections tomorrow: HW7, transactions CSE 414 - Winter 2014 2

Page 3: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Outline

•  Serial and Serializable Schedules (18.1)

•  Conflict Serializability (18.2)

•  Locks (18.3) [Start today and finish next time]

CSE 414 - Winter 2014 3

Page 4: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

4

Review: Transactions •  Problem: An application must perform several

writes and reads to the database, as a unit

•  Solution: multiple actions of the application are bundled into one unit called Transaction

•  Turing awards to database researchers –  Charles Bachman 1973 for CODASYL –  Edgar Codd 1981 for relational databases –  Jim Gray 1998 for transactions

CSE 414 - Winter 2014

Page 5: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Review: TXNs in SQL

CSE 414 - Winter 2014 5

BEGIN TRANSACTION [SQL statements]

COMMIT or ROLLBACK (=ABORT)

[single SQL statement] If BEGIN… missing, then TXN consists

of a single instruction

Page 6: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

6

Review: ACID

•  Atomic –  State shows either all the effects of txn, or none of them

•  Consistent –  Txn moves from a state where integrity holds, to

another where integrity holds •  Isolated

–  Effect of txns is the same as txns running one after another (ie looks like batch mode)

•  Durable –  Once a txn has committed, its effects remain in the

database

CSE 414 - Winter 2014

Page 7: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Implementing ACID Properties

•  Isolation: –  Achieved by the concurrency control manager (or scheduler) –  Discussed briefly in 414 today and in the next lecture –  Discussed more extensively in the book (and in 444)

•  Atomicity –  Achieved using a log and a recovery manager –  Discussed in book/444

•  Durability –  Implicitly achieved by writing back to disk

•  Consistency –  Implicitly guaranteed by A and I

CSE 414 - Winter 2014 7

Last two properties implied by the first two

Page 8: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Isolation: The Problem

•  Multiple transactions are running concurrently T1, T2, …

•  They read/write some common elements A1, A2, …

•  How can we prevent unwanted interference ? •  The SCHEDULER is responsible for that

CSE 414 - Winter 2014 8

Page 9: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Schedules

CSE 414 - Winter 2014 9

A schedule is a sequence of interleaved actions from all transactions

Page 10: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Example

T1 T2 READ(A, t) READ(A, s) t := t+100 s := s*2 WRITE(A, t) WRITE(A,s) READ(B, t) READ(B,s) t := t+100 s := s*2 WRITE(B,t) WRITE(B,s)

CSE 414 - Winter 2014 10

A and B are elements in the database

t and s are variables in txn source code

Page 11: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

A Serial Schedule T1 T2 READ(A, t) t := t+100 WRITE(A, t) READ(B, t) t := t+100 WRITE(B,t)

READ(A,s) s := s*2 WRITE(A,s) READ(B,s) s := s*2 WRITE(B,s)

CSE 414 - Winter 2014 11

Page 12: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Serializable Schedule

CSE 414 - Winter 2014 12

A schedule is serializable if it is equivalent to a serial schedule

Page 13: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

A Serializable Schedule T1 T2 READ(A, t) t := t+100 WRITE(A, t)

READ(A,s) s := s*2 WRITE(A,s)

READ(B, t) t := t+100 WRITE(B,t)

READ(B,s) s := s*2 WRITE(B,s)

This is a serializable schedule. This is NOT a serial schedule

CSE 414 - Winter 2014 13

Page 14: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

A Non-Serializable Schedule T1 T2 READ(A, t) t := t+100 WRITE(A, t)

READ(A,s) s := s*2 WRITE(A,s) READ(B,s) s := s*2 WRITE(B,s)

READ(B, t) t := t+100 WRITE(B,t)

CSE 414 - Winter 2014 14

Page 15: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

How do We Know if a Schedule is Serializable?

CSE 414 - Winter 2014 15

T1: r1(A); w1(A); r1(B); w1(B) T2: r2(A); w2(A); r2(B); w2(B)

Notation

Key Idea: Focus on conflicting operations

Page 16: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Conflicts

• Write-Read – WR • Read-Write – RW • Write-Write – WW

CSE 414 - Winter 2014 16

Page 17: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Conflict Serializability

Conflicts:

ri(X); wi(Y) Two actions by same transaction Ti:

wi(X); wj(X) Two writes by Ti, Tj to same element

wi(X); rj(X) Read/write by Ti, Tj to same element

ri(X); wj(X) CSE 414 - Winter 2014 17

Page 18: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Conflict Serializability

•  A schedule is conflict serializable if it can be transformed into a serial schedule by a series of swappings of adjacent non-conflicting actions

•  Every conflict-serializable schedule is serializable •  A serializable schedule may not necessarily be

conflict-serializable

CSE 414 - Winter 2014 18

Page 19: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Conflict Serializability

CSE 414 - Winter 2014 19

Example: r1(A); w1(A); r2(A); w2(A); r1(B); w1(B); r2(B); w2(B)

Page 20: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Conflict Serializability

CSE 414 - Winter 2014 20

Example:

r1(A); w1(A); r1(B); w1(B); r2(A); w2(A); r2(B); w2(B)

r1(A); w1(A); r2(A); w2(A); r1(B); w1(B); r2(B); w2(B)

Page 21: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Conflict Serializability

CSE 414 - Winter 2014 21

Example:

r1(A); w1(A); r1(B); w1(B); r2(A); w2(A); r2(B); w2(B)

r1(A); w1(A); r2(A); w2(A); r1(B); w1(B); r2(B); w2(B)

Page 22: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Conflict Serializability

CSE 414 - Winter 2014 22

Example:

r1(A); w1(A); r1(B); w1(B); r2(A); w2(A); r2(B); w2(B)

r1(A); w1(A); r2(A); w2(A); r1(B); w1(B); r2(B); w2(B)

r1(A); w1(A); r2(A); r1(B); w2(A); w1(B); r2(B); w2(B)

Page 23: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Conflict Serializability

CSE 414 - Winter 2014 23

Example:

r1(A); w1(A); r1(B); w1(B); r2(A); w2(A); r2(B); w2(B)

r1(A); w1(A); r2(A); w2(A); r1(B); w1(B); r2(B); w2(B)

r1(A); w1(A); r2(A); r1(B); w2(A); w1(B); r2(B); w2(B)

r1(A); w1(A); r1(B); r2(A); w2(A); w1(B); r2(B); w2(B)

….

Page 24: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Testing for Conflict-Serializability

Precedence graph: •  A node for each transaction Ti, •  An edge from Ti to Tj whenever an action in

Ti conflicts with, and comes before an action in Tj

•  The schedule is serializable iff the precedence graph is acyclic

CSE 414 - Winter 2014 24

Page 25: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Example 1

CSE 414 - Winter 2014 25

r2(A); r1(B); w2(A); r3(A); w1(B); w3(A); r2(B); w2(B)

1 2 3

Page 26: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Example 1

CSE 414 - Winter 2014 26

r2(A); r1(B); w2(A); r3(A); w1(B); w3(A); r2(B); w2(B)

1 2 3

This schedule is conflict-serializable

A B

Page 27: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Example 2

CSE 414 - Winter 2014 27

r2(A); r1(B); w2(A); r2(B); r3(A); w1(B); w3(A); w2(B)

1 2 3

Page 28: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Example 2

CSE 414 - Winter 2014 28

1 2 3

This schedule is NOT conflict-serializable

A B

B

r2(A); r1(B); w2(A); r2(B); r3(A); w1(B); w3(A); w2(B)

Page 29: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Scheduler

•  Scheduler = is the module that schedules the transaction’s actions, ensuring serializability

•  Also called Concurrency Control Manager

•  We discuss next how a scheduler may be implemented

CSE 414 - Winter 2014 29

Page 30: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Implementing a Scheduler

Major differences between database vendors •  Locking Scheduler

–  Aka “pessimistic concurrency control” –  SQLite, SQL Server, DB2

•  Multiversion Concurrency Control (MVCC) –  Aka “optimistic concurrency control” –  Postgres, Oracle

We discuss only locking in 414

Page 31: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Locking Scheduler

Simple idea: •  Each element has a unique lock •  Each transaction must first acquire the lock

before reading/writing that element •  If the lock is taken by another transaction,

then wait •  The transaction must release the lock(s)

CSE 414 - Winter 2014 31 By using locks scheduler ensures conflict-serializability

Page 32: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

What Data Elements are Locked?

Major differences between vendors:

•  Lock on the entire database –  SQLite

•  Lock on individual records –  SQL Server, DB2, etc

CSE 414 - Winter 2014 32

Page 33: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Let’s Study SQLite First

•  SQLite is very simple •  More info: http://www.sqlite.org/atomiccommit.html

CSE 414 - Winter 2014 33

Page 34: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

SQLite

Step 1: when a transaction begins •  Acquire a READ LOCK (aka "SHARED" lock) •  All these transactions may read happily •  They all read data from the database file •  If the transaction commits without writing

anything, then it simply releases the lock

CSE 414 - Winter 2014 34

Page 35: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

SQLite

Step 2: when one transaction wants to write •  Acquire a RESERVED LOCK •  May coexists with many READ LOCKs •  Writer TXN may write; these updates are only in

main memory; others don't see the updates •  Reader TXN continue to read from the file •  New readers accepted •  No other TXN is allowed a RESERVED LOCK

CSE 414 - Winter 2014 35

Page 36: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

SQLite

Step 3: when writer transaction wants to commit, it needs exclusive lock, which can’t coexists with read locks •  Acquire a PENDING LOCK •  May coexists with old READ LOCKs •  No new READ LOCKS are accepted •  Wait for all read locks to be released

CSE 414 - Winter 2014 36

Why not write to disk right now?

Page 37: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

SQLite

Step 4: when all read locks have been released •  Acquire the EXCLUSIVE LOCK •  Nobody can touch the database now •  All updates are written permanently to the

database file

•  Release the lock and COMMIT

CSE 414 - Winter 2014 37

Page 38: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

SQLite

CSE 414 - Winter 2014 38

None READ LOCK

RESERVED LOCK

PENDING LOCK

EXCLUSIVE LOCK

commit executed

begin transaction first write no more read locks commit requested

commit

Page 39: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

SQLite Demo

create table r(a int, b int); insert into r values (1,10); insert into r values (2,20); insert into r values (3,30);

CSE 414 - Winter 2014 39

Page 40: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Demonstrating Locking in SQLite

T1: begin transaction; select * from r; -- T1 has a READ LOCK T2: begin transaction; select * from r; -- T2 has a READ LOCK

CSE 414 - Winter 2014 40

Page 41: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Demonstrating Locking in SQLite

T1: update r set b=11 where a=1; -- T1 has a RESERVED LOCK T2: update r set b=21 where a=2; -- T2 asked for a RESERVED LOCK: DENIED

CSE 414 - Winter 2014 41

Page 42: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Demonstrating Locking in SQLite

T3: begin transaction; select * from r; commit; -- everything works fine, could obtain READ LOCK

CSE 414 - Winter 2014 42

Page 43: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Demonstrating Locking in SQLite

T1: commit; -- SQL error: database is locked -- T1 asked for PENDING LOCK -- GRANTED -- T1 asked for EXCLUSIVE LOCK -- DENIED

CSE 414 - Winter 2014 43

Page 44: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Demonstrating Locking in SQLite

T3': begin transaction; select * from r; -- T3 asked for READ LOCK-- DENIED (due to T1) T2: commit; -- releases the last READ LOCK

CSE 414 - Winter 2014 44

Page 45: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Some Famous Anomalies

•  What could go wrong if we didn’t have concurrency control: –  Dirty reads (including inconsistent reads) –  Unrepeatable reads –  Lost updates

Many other things can go wrong too

CSE 414 - Winter 2014 45

Page 46: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Dirty Reads

T1: WRITE(A) T1: ABORT

T2: READ(A)

CSE 414 - Winter 2014

Write-Read Conflict

46

Page 47: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Inconsistent Read

T1: A := 20; B := 20; T1: WRITE(A) T1: WRITE(B)

T2: READ(A); T2: READ(B);

CSE 414 - Winter 2014

Write-Read Conflict

47

Page 48: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Unrepeatable Read

T1: WRITE(A)

T2: READ(A); T2: READ(A);

CSE 414 - Winter 2014

Read-Write Conflict

48

Page 49: Introduction to Data Management CSE 414€¦ · • Serial and Serializable Schedules (18.1) • Conflict Serializability (18.2) • Locks (18.3) [Start today and finish next time]

Lost Update

T1: READ(A) T1: A := A+5 T1: WRITE(A)

T2: READ(A); T2: A := A*1.3 T2: WRITE(A);

CSE 414 - Winter 2014

Write-Write Conflict

49