![Page 1: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/1.jpg)
Database SystemsCSE 414
Lecture 21: More Transactions(Ch 8.1-3)
CSE 414 - Spring 2017 1
![Page 2: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/2.jpg)
Announcements
• HW6 due on Today
• WQ7 (last!) due on Sunday
• HW7 will be posted tomorrow– due on Wed, May 24– using JDBC to execute SQL from Java– using SQL Server via Azure– setup covered in section tomorrow
CSE 414 - Spring 2017 2
![Page 3: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/3.jpg)
Outline
• Serial and Serializable Schedules (18.1)
• Conflict Serializability (18.2)
• Locks (18.3)
CSE 414 - Spring 2017 3
![Page 4: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/4.jpg)
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 a Transaction
• Turing awards to database researchers– Charles Bachman 1973 for CODASYL– Edgar Codd 1981 for relational databases– Jim Gray 1998 for transactions
CSE 414 - Spring 2017
![Page 5: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/5.jpg)
Review: TXNs in SQL
CSE 414 - Spring 2017 5
BEGIN TRANSACTION [SQL statements]
COMMIT or ROLLBACK (=ABORT)
[single SQL statement]If BEGIN… missing,then TXN consists
of a single instruction
![Page 6: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/6.jpg)
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 (i.e., looks like batch mode)
• Durable– Once a txn has committed, its effects remain in the
database
CSE 414 - Spring 2017
![Page 7: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/7.jpg)
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 414 - Spring 2017 7
Notation says nothing about tables…(These techniques apply more generally.)
![Page 8: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/8.jpg)
Schedules
CSE 414 - Spring 2017 8
A schedule is a sequenceof interleaved actions from all transactions
![Page 9: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/9.jpg)
Serial Schedule
• A serial schedule is one in which transactions are executed one after the other, in some sequential order
• Fact: nothing can go wrong if the system executes transactions serially– But database systems don’t do that because we need
better performance
9CSE 414 - Spring 2017
![Page 10: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/10.jpg)
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 414 - Spring 2017 10
A and B are elementsin the database
t and s are variables in txn source code
![Page 11: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/11.jpg)
A Serial ScheduleT1 T2READ(A, t)t := t+100WRITE(A, t)READ(B, t)t := t+100WRITE(B,t)
READ(A,s)s := s*2WRITE(A,s)READ(B,s)s := s*2WRITE(B,s)
CSE 414 - Spring 2017 11
Tim
e
![Page 12: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/12.jpg)
Another Serial ScheduleT1 T2
READ(A,s)s := s*2WRITE(A,s)READ(B,s)s := s*2WRITE(B,s)
READ(A, t)t := t+100WRITE(A, t)READ(B, t)t := t+100WRITE(B,t)
CSE 414 - Spring 2017 12
Tim
e
![Page 13: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/13.jpg)
Serializable Schedule
CSE 414 - Spring 2017 13
A schedule is serializable if it is equivalent to some serial schedule
![Page 14: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/14.jpg)
A Serializable ScheduleT1 T2READ(A, t)t := t+100WRITE(A, t)
READ(A,s)s := s*2WRITE(A,s)
READ(B, t)t := t+100WRITE(B,t)
READ(B,s)s := s*2WRITE(B,s)
This is a serializable schedule.This is NOT a serial schedule
CSE 414 - Spring 2017 14
![Page 15: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/15.jpg)
A Non-Serializable ScheduleT1 T2READ(A, t)t := t+100WRITE(A, t)
READ(A,s)s := s*2WRITE(A,s)READ(B,s)s := s*2WRITE(B,s)
READ(B, t)t := t+100WRITE(B,t)
CSE 414 - Spring 2017 15
![Page 16: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/16.jpg)
How do We Know if a Schedule is Serializable?
CSE 414 - Spring 2017 16
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 17: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/17.jpg)
Conflicts
• Write-Read – WR• Read-Write – RW• Write-Write – WW
CSE 414 - Spring 2017 17
![Page 18: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/18.jpg)
Conflict Serializability
Conflicts: (it means: cannot be swapped)
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 - Spring 2017 18
![Page 19: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/19.jpg)
Conflict Serializability
• A schedule is conflict serializable if it can be transformed into a serial schedule by a series of swaps of adjacent non-conflicting actions
• Every conflict-serializable schedule is serializable• A serializable schedule may not necessarily be
conflict-serializable
CSE 414 - Spring 2017 19
![Page 20: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/20.jpg)
Conflict Serializability
CSE 414 - Spring 2017 20
Example:r1(A); w1(A); r2(A); w2(A); r1(B); w1(B); r2(B); w2(B)
![Page 21: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/21.jpg)
Conflict Serializability
CSE 414 - Spring 2017 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: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/22.jpg)
Conflict Serializability
CSE 414 - Spring 2017 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: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/23.jpg)
Conflict Serializability
CSE 414 - Spring 2017 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: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/24.jpg)
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 - Spring 2017 24
![Page 25: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/25.jpg)
Example 1
CSE 414 - Spring 2017 25
r2(A); r1(B); w2(A); r3(A); w1(B); w3(A); r2(B); w2(B)
1 2 3
![Page 26: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/26.jpg)
Example 1
CSE 414 - Spring 2017 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
AB
![Page 27: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/27.jpg)
Example 2
CSE 414 - Spring 2017 27
r2(A); r1(B); w2(A); r2(B); r3(A); w1(B); w3(A); w2(B)
1 2 3
![Page 28: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/28.jpg)
Example 2
CSE 414 - Spring 2017 28
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 29: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/29.jpg)
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 - Spring 2017 29
![Page 30: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/30.jpg)
Implementing a Scheduler
Major differences between database vendors• Locking Scheduler
– Aka “pessimistic concurrency control”– SQLite, SQL Server, DB2, Spanner
• Multiversion Concurrency Control (MVCC)– Aka “optimistic concurrency control”– Postgres, Oracle, Spanner
We discuss only locking in 41430CSE 414 - Spring 2017
![Page 31: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/31.jpg)
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 - Spring 2017 31By using locks scheduler ensures conflict-serializability
![Page 32: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/32.jpg)
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 - Spring 2017 32
![Page 33: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/33.jpg)
Let’s Study SQLite First
• SQLite is very simple• More info: http://www.sqlite.org/atomiccommit.html
• Lock types– READ LOCK (to read)– RESERVED LOCK (to write)– PENDING LOCK (wants to commit)– EXCLUSIVE LOCK (to commit)
CSE 414 - Spring 2017 33
![Page 34: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/34.jpg)
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 - Spring 2017 34
![Page 35: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/35.jpg)
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 - Spring 2017 35
![Page 36: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/36.jpg)
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 - Spring 2017 36
Why not writeto disk right now?
![Page 37: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/37.jpg)
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 - Spring 2017 37
![Page 38: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/38.jpg)
SQLite
CSE 414 - Spring 2017 38
None READLOCK
RESERVEDLOCK
PENDINGLOCK
EXCLUSIVELOCK
commit executed
begin transaction first write no more read lockscommit requested
commit
![Page 39: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/39.jpg)
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 - Spring 2017 39
![Page 40: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/40.jpg)
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 - Spring 2017 40
![Page 41: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/41.jpg)
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 - Spring 2017 41
![Page 42: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/42.jpg)
Demonstrating Locking in SQLite
T3:begin transaction;select * from R;commit;-- everything works fine, could obtain READ LOCK
CSE 414 - Spring 2017 42
![Page 43: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/43.jpg)
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 - Spring 2017 43
![Page 44: Database Systems CSE 414 - courses.cs.washington.edu...writes and reads to the database, as a unit •Solution: multiple actions of the application are ... Testing for Conflict-Serializability](https://reader034.vdocuments.net/reader034/viewer/2022042223/5ec96f1dd2542c249e6cf8f6/html5/thumbnails/44.jpg)
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; T1 can commit
CSE 414 - Spring 2017 44