+ All Categories
Home > Documents > Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

Date post: 02-Jan-2016
Category:
Upload: gervase-marshall
View: 222 times
Download: 2 times
Share this document with a friend
Popular Tags:
37
Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 2013 1
Transcript
Page 1: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

Introduction to Data ManagementCSE 344

Lecture 23: Transactions

CSE 344 - Winter 2013 1

Page 2: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

Announcements

• HW6 is due tonight

• Webquiz due next Monday

• HW7 is posted:– Some Java programming required– Plus connection to SQL Azure– Please attend the quiz section for more info!

CSE 344 - Winter 2013 2

Page 3: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

Outline

• Serial and Serializable Schedules (18.1)

• Conflict Serializability (18.2)

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

CSE 344 - Winter 2013 3

Page 4: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

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 344 - Winter 2013

Page 5: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

5

Transactions in Applications

BEGIN TRANSACTION

[SQL statements]

COMMIT or ROLLBACK (=ABORT)

CSE 344 - Winter 2013

Page 6: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

6

Transaction PropertiesACID

• 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 344 - Winter 2013

Page 7: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

Implementing ACID Properties

• Isolation:– Achieved by the concurrency control manager (or scheduler)– We will discuss this today and in the next lecture

• Atomicity– Achieved using a log and a recovery manager– Will not discuss in class (come to 444 instead)

• Durability– Implicitly achieved by writing back to disk

• Consistency– Implicitly guaranteed by A and I

CSE 344 - Winter 2013 7

Page 8: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

Isolation: The Problem

• Multiple transactions are running concurrentlyT1, T2, …

• They read/write some common elementsA1, A2, …

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

CSE 344 - Winter 2013 8

Page 9: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

Schedules

CSE544 - Spring, 2012 9

A schedule is a sequence of interleaved actions from all transactions

Page 10: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

Example

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

CSE 344 - Winter 2013 10

A and B are elements

in the databaset and s are variables

in tx source code

Page 11: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

A Serial ScheduleT1 T2READ(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 344 - Winter 2013 11

Page 12: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

Serializable Schedule

CSE544 - Spring, 2012 12

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

Page 13: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

A Serializable ScheduleT1 T2READ(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)

Notice: This is NOT a serial schedule

CSE 344 - Winter 2013 13

Page 14: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

A Non-Serializable ScheduleT1 T2READ(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 344 - Winter 2013 14

Page 15: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

How do We Know if a Schedule is Serializable?

CSE 344 - Winter 2013 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 344 Lecture 23: Transactions CSE 344 - Winter 20131.

Conflicts

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

CSE544 - Spring, 2012 16

Page 17: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

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 344 - Winter 2013 17

Page 18: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

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

CSE 344 - Winter 2013 18

Page 19: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

Conflict Serializability

CSE 344 - Winter 2013 19

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 20: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

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

CSE544 - Spring, 2012 20

Page 21: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

Example 1

CSE544 - Spring, 2012 21

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

1 2 3

Page 22: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

Example 1

CSE544 - Spring, 2012 22

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

1 2 3

This schedule is conflict-serializable

AB

Page 23: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

Example 2

CSE544 - Spring, 2012 23

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

1 2 3

Page 24: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

Example 2

CSE544 - Spring, 2012 24

1 2 3

This schedule is NOT conflict-serializable

AB

B

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

Page 25: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

Scheduler

• The scheduler is the module that schedules the transaction’s actions, ensuring serializability

• How ? We discuss one technique in 344:– Locking!– Aka “pessimistic concurrency control”

CSE 344 - Winter 2013 25

Page 26: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

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 344 - Winter 2013 26

Page 27: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

Implementation inVarious DBMSs

• SQLite: one lock for entire database

• SQL Server, DB2 = one lock per record– … and index entry, etc

• Bottom line: Implementation of transactions varies between DBMSs– Read the documentation!– Some DBMSs don’t even use locking!

CSE 344 - Winter 2013 27

Page 28: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

Let’s Study SQLite First

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

CSE 344 - Winter 2013 28

Page 29: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

SQLite

• Step 1: every transaction acquires a READ LOCK (aka "SHARED" lock)– All these transactions may read happily

• Step 2: when one transaction wants to write– Acquire a RESERVED LOCK– This lock may coexists with many READ LOCKs– Writer txn may write; others don't see updates– Reader txns continue to read– New readers accepted– No other txn is allowed a RESERVED LOCK

Page 30: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

SQLite

• Step 3: writer transaction wants to commit– It needs exclusive lock, can’t coexists with read locks– Acquire a PENDING LOCK

• Coexists with READ LOCKs• But no new READ LOCKS are accepted now

– Wait for all read locks to be released– Acquire the EXCLUSIVE LOCK – All updates are written permanently to the database

CSE 344 - Winter 2013 30

Page 31: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

SQLite

CSE 344 - Winter 2013 31

None READLOCK

RESERVEDLOCK

PENDINGLOCK

EXCLUSIVELOCK

commit executed

begin transaction first update no more read lockscommit requested

Page 32: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

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 344 - Winter 2013 32

Page 33: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

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 344 - Winter 2013 33

Page 34: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

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 344 - Winter 2013 34

Page 35: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

Demonstrating Locking in SQLite

T3:

begin transaction;

select * from r;

commit;

-- everything works fine, could obtain READ LOCK

CSE 344 - Winter 2013 35

Page 36: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

Demonstrating Locking in SQLite

T1:

commit;

-- SQL error: database is locked

-- T1 asked for PENDING LOCK -- GRANTED

-- T1 asked for EXCLUSIVE LOCK -- DENIED

CSE 344 - Winter 2013 36

Page 37: Introduction to Data Management CSE 344 Lecture 23: Transactions CSE 344 - Winter 20131.

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 344 - Winter 2013 37


Recommended