Introduction to Data Management CSE 344 Unit 7:

Published  . 0 views
↓ Download
Introduction to Data Management CSE 344 Unit 7:
1 / 1
Introduction to Data Management CSE 344 Unit 7: - slide 1 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 2 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 3 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 4 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 5 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 6 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 7 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 8 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 9 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 10 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 11 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 12 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 13 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 14 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 15 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 16 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 17 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 18 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 19 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 20 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 21 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 22 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 23 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 24 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 25 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 26 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 27 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 28 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 29 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 30 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 31 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 32 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 33 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 34 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 35 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 36 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 37 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 38 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 39 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 40 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 41 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 42 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 43 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 44 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 45 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 46 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 47 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 48 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 49 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 50 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 51 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 52 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 53 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 54 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 55 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 56 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 57 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 58 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 59 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 60 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 61 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 62 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 63 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 64 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 65 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 66 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 67 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 68 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 69 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 70 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 71 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 72 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 73 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 74 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 75 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 76 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 77 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 78 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 79 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 80 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 81 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 82 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 83 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 84 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 85 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 86 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 87 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 88 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 89 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 90 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 91 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 92 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 93 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 94 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 95 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 96 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 97 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 98 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 99 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 100 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 101 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 102 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 103 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 104 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 105 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 106 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 107 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 108 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 109 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 110 of 111 Introduction to Data Management CSE 344 Unit 7: - slide 111 of 111
Description: Introduction to Data Management CSE 344 Unit 7: Transactions Schedules Implementation Two-phase Locking (3 lectures) 1 Class Overview Unit 1: Intro Unit 2: Relational Data Models and Query Languages Unit 3: Non-relational data Unit 4: RDMBS

Related Topics

Download Presentation

"Introduction to Data Management CSE 344 Unit 7:" is the property of its rightful owner. Permission is granted to download and print the materials on this website for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.

Presentation Transcript

slide1. Introduction to Data Management CSE 344 Unit 7: Transactions Schedules Implementation Two-phase Locking

(3 lectures) 1<br>
slide2. Class Overview Unit 1: Intro
Unit 2: Relational Data Models and Query Languages
Unit 3: Non-relational data
Unit 4: RDMBS internals and query optimization
Unit 5: Parallel query processing
Unit 6: DBMS usability, conceptual design
Unit 7: Transactions
Locking and schedules
Writing DB applications
Unit 8: Advanced topics (time permitting) 2<br>
slide3. Data Management Pipeline Conceptual Schema Physical Schema Schema designer Database administrator Application programmer 3<br>
slide4. Transactions We use database transactions everyday
Bank $$$ transfers
Online shopping
Signing up for classes

For this class, a transaction is a series of DB queries
Read / Write / Update / Delete / Insert
Unit of work issued by a user that is independent from others CSE 344 - 2017au 4<br>
slide5. What’s the big deal? CSE 344 - 2017au 5<br>
slide6. Challenges Want to execute many apps concurrently
All these apps read and write data to the same DB

Simple solution: only serve one app at a time
What’s the problem?

Want: multiple operations to be executed atomically over the same DBMS CSE 344 - 2017au 6<br>
slide7. What can go wrong? Manager: balance budgets among projects
Remove $10k from project A
Add $7k to project B
Add $3k to project C

CEO: check company’s total balance
SELECT SUM(money) FROM budget;

This is called a dirty / inconsistent read aka a WRITE-READ conflict CSE 344 - 2017au 7<br>
slide8. What can go wrong? App 1: SELECT inventory FROM products WHERE pid = 1

App 2: UPDATE products SET inventory = 0 WHERE pid = 1

App 1: SELECT inventory * price FROM products WHERE pid = 1

This is known as an unrepeatable read aka READ-WRITE conflict CSE 344 - 2017au 8<br>
slide9. What can go wrong? Account 1 = $100 Account 2 = $100 Total = $200 App 1:
Set Account 1 = $200
Set Account 2 = $0

App 2:
Set Account 2 = $200
Set Account 1 = $0

At the end:
Total = $200 App 1: Set Account 1 = $200

App 2: Set Account 2 = $200

App 1: Set Account 2 = $0

App 2: Set Account 1 = $0

At the end:
Total = $0 This is called the lost update aka WRITE-WRITE conflict CSE 344 - 2017au 9<br>
slide10. What can go wrong? Buying tickets to the next Bieber concert:
Fill up form with your mailing address
Put in debit card number
Click submit
Screen shows money deducted from your account
[Your browser crashes] CSE 344 - 2017au 10 Lesson:
Changes to the database should be ALL or NOTHING<br>
slide11. Transactions Collection of statements that are executed atomically (logically speaking) 11 BEGIN TRANSACTION [SQL statements]
COMMIT or ROLLBACK (=ABORT) [single SQL statement] If BEGIN… missing, then TXN consists of a single instruction CSE 344 - 2017au<br>
slide12. Transactions Demo CSE 344 - 2017au 12<br>
slide13. Turing Awards in Data Management CSE 344 - 2017au 13 Charles Bachman, 1973
IDS and CODASYL Ted Codd, 1981
Relational model Michael Stonebraker, 2014
INGRES and Postgres Jim Gray, 1998
Transaction processing<br>
slide14. 14 Know your chemistry transactions: ACID Atomic
State shows either all the effects of txn, or none of them
Consistent
Txn moves from a DBMS state where integrity holds, to another where integrity holds
remember integrity constraints?
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 344 - 2017au<br>
slide15. Atomic Definition: A transaction is ATOMIC if all its updates must happen or not at all.
Example: move $100 from A to B
UPDATE accounts SET bal = bal – 100 WHERE acct = A;
UPDATE accounts SET bal = bal + 100 WHERE acct = B;
BEGIN TRANSACTION; UPDATE accounts SET bal = bal – 100 WHERE acct = A; UPDATE accounts SET bal = bal + 100 WHERE acct = B; COMMIT; 15 CSE 344 - 2017au<br>
slide16. Isolated Definition An execution ensures that txns are isolated, if the effect of each txn is as if it were the only txn running on the system. CSE 344 - 2017au 16<br>
slide17. Consistent Recall: integrity constraints govern how values in tables are related to each other
Can be enforced by the DBMS, or ensured by the app

How consistency is achieved by the app:
App programmer ensures that txns only takes a consistent DB state to another consistent state
DB makes sure that txns are executed atomically

Can defer checking the validity of constraints until the end of a transaction CSE 344 - 2017au 17<br>
slide18. Durable A transaction is durable if its effects continue to exist after the transaction and even after the program has terminated

How?
By writing to disk!
More in 444 CSE 344 - 2017au 18<br>
slide19. Rollback transactions If the app gets to a state where it cannot complete the transaction successfully, execute ROLLBACK

The DB returns to the state prior to the transaction

What are examples of such program states? CSE 344 - 2017au 19<br>
slide20. 20 ACID Atomic
Consistent
Isolated
Durable

Enjoy this in HW7!

Again: by default each statement is its own txn
Unless auto-commit is off then each statement starts a new txn CSE 344 - 2017au<br>
slide21. Transaction Schedules CSE 344 - 2017au 21<br>
slide22. Schedules CSE 344 - 2017au 22 A schedule is a sequence of interleaved actions from all transactions<br>
slide23. 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
(up to what we have learned so far)
But DBMS don’t do that because we want better overall system performance CSE 344 - 2017au 23<br>
slide24. Example CSE 344 - 2017au 24 A and B are elements
in the database
t and s are variables
in txn source code<br>
slide25. Example of a (Serial) Schedule CSE 344 - 2017au 25 Time<br>
slide26. Another Serial Schedule CSE 344 - 2017au 26 Time<br>
slide27. Review: Serializable Schedule CSE 344 - 2017au 27 A schedule is serializable if it is equivalent to a serial schedule<br>
slide28. A Serializable Schedule This is a serializable schedule.
This is NOT a serial schedule CSE 344 - 2017au 28<br>
slide29. A Non-Serializable Schedule CSE 344 - 2017au 29<br>
slide30. How do We Know if a Schedule is Serializable? CSE 344 - 2017au 30 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<br>
slide31. Conflicts Write-Read – WR
Read-Write – RW
Write-Write – WW
Read-Read? CSE 344 - 2017au 31<br>
slide32. Conflict Serializability Conflicts: (i.e., swapping will change program behavior) 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 - 2017au 32<br>
slide33. 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
The converse is not true (why?) CSE 344 - 2017au 33<br>
slide34. Conflict Serializability CSE 344 - 2017au 34 Example: r1(A); w1(A); r2(A); w2(A); r1(B); w1(B); r2(B); w2(B)<br>
slide35. Conflict Serializability CSE 344 - 2017au 35 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)<br>
slide36. Conflict Serializability CSE 344 - 2017au 36 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)<br>
slide37. Conflict Serializability CSE 344 - 2017au 37 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)<br>
slide38. Conflict Serializability CSE 344 - 2017au 38 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) ….<br>
slide39. 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 conflict-serializable iff the precedence graph is acyclic CSE 344 - 2017au 39<br>
slide40. Example 1 CSE 344 - 2017au 40 r2(A); r1(B); w2(A); r3(A); w1(B); w3(A); r2(B); w2(B)<br>
slide41. Example 1 CSE 344 - 2017au 41 r2(A); r1(B); w2(A); r3(A); w1(B); w3(A); r2(B); w2(B) This schedule is conflict-serializable<br>
slide42. Example 2 CSE 344 - 2017au 42 r2(A); r1(B); w2(A); r2(B); r3(A); w1(B); w3(A); w2(B)<br>
slide43. Example 2 CSE 344 - 2017au 43 This schedule is NOT conflict-serializable r2(A); r1(B); w2(A); r2(B); r3(A); w1(B); w3(A); w2(B)<br>
slide44. Implementing Transactions CSE 344 - 2017au 44<br>
slide45. Scheduler Scheduler = 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 344 - 2017au 45<br>
slide46. 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: Snapshot Isolation (SI) We discuss only locking schedulers in this class 46 CSE 344 - 2017au<br>
slide47. 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 - 2017au 47 By using locks scheduler ensures conflict-serializability<br>
slide48. What Data Elements are Locked? Major differences between vendors:

Lock on the entire database
SQLite

Lock on individual records
SQL Server, DB2, etc CSE 344 - 2017au 48<br>
slide49. Case Study: SQLite 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 344 - 2017au 49<br>
slide50. 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 344 - 2017au 50<br>
slide51. 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 344 - 2017au 51<br>
slide52. 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 344 - 2017au 52 Why not write to disk right now?<br>
slide53. 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 344 - 2017au 53<br>
slide54. SQLite CSE 344 - 2017au 54 None READ LOCK RESERVED LOCK PENDING LOCK EXCLUSIVE LOCK commit executed begin transaction first write no more read locks commit requested commit Lecture notes contains a SQLite demo<br>
slide55. 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 - 2017au 55<br>
slide56. 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 - 2017au 56<br>
slide57. 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 - 2017au 57<br>
slide58. Demonstrating Locking in SQLite T3:
begin transaction;
select * from r;
commit;
-- everything works fine, could obtain READ LOCK CSE 344 - 2017au 58<br>
slide59. 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 - 2017au 59<br>
slide60. 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 60<br>
slide61. How do anomalies show up in schedules? 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 344 - 2017au 61<br>
slide62. Dirty Reads T1: WRITE(A)

T1: ABORT T2: READ(A) CSE 344 - 2017au Write-Read Conflict 62<br>
slide63. Inconsistent Read T1: A := 20; B := 20;
T1: WRITE(A)

T1: WRITE(B) T2: READ(A);
T2: READ(B); CSE 344 - 2017au Write-Read Conflict 63<br>
slide64. Unrepeatable Read T1: WRITE(A) T2: READ(A);

T2: READ(A); CSE 344 - 2017au Read-Write Conflict 64<br>
slide65. Lost Update T1: READ(A)

T1: A := A+5

T1: WRITE(A) T2: READ(A);

T2: A := A*1.3

T2: WRITE(A); Write-Write Conflict 65<br>
slide66. Lock-based Implementation of Transactions CSE 344 - 2017au 66<br>
slide67. Now for something more serious… CSE 344 - 2017au 67<br>
slide68. More Notations CSE 344 - 2017au 68 Li(A) = transaction Ti acquires lock for element A

Ui(A) = transaction Ti releases lock for element A<br>
slide69. A Non-Serializable Schedule CSE 344 - 2017au 69<br>
slide70. Example CSE 344 - 2017au 70 Scheduler has ensured a conflict-serializable schedule<br>
slide71. But… 71 Locks did not enforce conflict-serializability !!! What’s wrong ?<br>
slide72. Two Phase Locking (2PL) CSE 344 - 2017au 72 In every transaction, all lock requests must precede all unlock requests The 2PL rule:<br>
slide73. Example: 2PL transactions CSE 344 - 2017au 73 Now it is conflict-serializable<br>
slide74. Two Phase Locking (2PL) 74 Theorem: 2PL ensures conflict serializability<br>
slide75. Two Phase Locking (2PL) Theorem: 2PL ensures conflict serializability Proof. Suppose not: then there exists a cycle in the precedence graph. T1 T2 T3 B A C<br>
slide76. Two Phase Locking (2PL) 76 Theorem: 2PL ensures conflict serializability Proof. Suppose not: then there exists a cycle in the precedence graph. T1 T2 T3 B A C Then there is the following temporal cycle in the schedule:<br>
slide77. Two Phase Locking (2PL) 77 Theorem: 2PL ensures conflict serializability Proof. Suppose not: then there exists a cycle in the precedence graph. T1 T2 T3 B A C Then there is the following temporal cycle in the schedule: U1(A)L2(A) why? U1(A) happened strictly before L2(A)<br>
slide78. Two Phase Locking (2PL) 78 Theorem: 2PL ensures conflict serializability Proof. Suppose not: then there exists a cycle in the precedence graph. T1 T2 T3 B A C Then there is the following temporal cycle in the schedule: U1(A)L2(A) why?<br>
slide79. Two Phase Locking (2PL) 79 Theorem: 2PL ensures conflict serializability Proof. Suppose not: then there exists a cycle in the precedence graph. T1 T2 T3 B A C Then there is the following temporal cycle in the schedule: U1(A)L2(A)
L2(A)U2(B) why? L2(A) happened strictly before U1(A)<br>
slide80. Two Phase Locking (2PL) 80 Theorem: 2PL ensures conflict serializability Proof. Suppose not: then there exists a cycle in the precedence graph. T1 T2 T3 B A C Then there is the following temporal cycle in the schedule: U1(A)L2(A)
L2(A)U2(B) why?<br>
slide81. Two Phase Locking (2PL) 81 Theorem: 2PL ensures conflict serializability Proof. Suppose not: then there exists a cycle in the precedence graph. T1 T2 T3 B A C Then there is the following temporal cycle in the schedule:
U1(A)L2(A)
L2(A)U2(B)
U2(B)L3(B) why?<br>
slide82. Two Phase Locking (2PL) 82 Theorem: 2PL ensures conflict serializability Proof. Suppose not: then there exists a cycle in the precedence graph. T1 T2 T3 B A C Then there is the following temporal cycle in the schedule:
U1(A)L2(A)
L2(A)U2(B)
U2(B)L3(B)

......etc.....<br>
slide83. Two Phase Locking (2PL) 83 Theorem: 2PL ensures conflict serializability Proof. Suppose not: then there exists a cycle in the precedence graph. T1 T2 T3 B A C Then there is the following temporal cycle in the schedule:
U1(A)L2(A)
L2(A)U2(B)
U2(B)L3(B)
L3(B)U3(C)
U3(C)L1(C)
L1(C)U1(A) Cycle in time: Contradiction<br>
slide84. A New Problem: Non-recoverable Schedule CSE 344 - 2017au 84<br>
slide85. A New Problem: Non-recoverable Schedule CSE 344 - 2017au 85 Elements A, B written by T1 are restored to their original value.<br>
slide86. A New Problem: Non-recoverable Schedule CSE 344 - 2017au 86 Elements A, B written by T1 are restored to their original value. Dirty reads of A, B lead to incorrect writes.<br>
slide87. A New Problem: Non-recoverable Schedule CSE 344 - 2017au 87 Elements A, B written by T1 are restored to their original value. Can no longer undo! Dirty reads of A, B lead to incorrect writes.<br>
slide88. Strict 2PL CSE 344 - 2017au 88 All locks are held until commit/abort:
All unlocks are done together with commit/abort. The Strict 2PL rule: With strict 2PL, we will get schedules that
are both conflict-serializable and recoverable<br>
slide89. Strict 2PL 89<br>
slide90. Strict 2PL Lock-based systems always use strict 2PL
Easy to implement:
Before a transaction reads or writes an element A, insert an L(A)
When the transaction commits/aborts, then release all locks
Ensures both conflict serializability and recoverability CSE 344 - 2017au 90<br>
slide91. Another problem: Deadlocks T1: R(A), W(B)
T2: R(B), W(A)

T1 holds the lock on A, waits for B
T2 holds the lock on B, waits for A

This is a deadlock! CSE 344 - 2017au 91<br>
slide92. Another problem: Deadlocks To detect a deadlocks, search for a cycle in the waits-for graph:
T1 waits for a lock held by T2;
T2 waits for a lock held by T3;
. . .
Tn waits for a lock held by T1

Relatively expensive: check periodically, if deadlock is found, then abort one TXN; re-check for deadlock more often (why?) 92<br>
slide93. Lock Modes S = shared lock (for READ)
X = exclusive lock (for WRITE) CSE 344 - 2017au 93 Lock compatibility matrix:<br>
slide94. Lock Modes S = shared lock (for READ)
X = exclusive lock (for WRITE) CSE 344 - 2017au 94 Lock compatibility matrix:<br>
slide95. Lock Granularity Fine granularity locking (e.g., tuples)
High concurrency
High overhead in managing locks
E.g., SQL Server

Coarse grain locking (e.g., tables, entire database)
Many false conflicts
Less overhead in managing locks
E.g., SQL Lite

Solution: lock escalation changes granularity as needed CSE 344 - 2017au 95<br>
slide96. Lock Performance CSE 344 - 2017au 96 Throughput (TPS) # Active Transactions thrashing Why ? TPS = Transactions per second To avoid, use admission control<br>
slide97. Phantom Problem So far we have assumed the database to be a static collection of elements (=tuples)

If tuples are inserted/deleted then the phantom problem appears CSE 344 - 2017au 97<br>
slide98. Phantom Problem CSE 344 - 2017au 98 Is this schedule serializable ? Suppose there are two blue products, A1, A2:<br>
slide99. Phantom Problem CSE 344 - 2017au 99 R1(A1);R1(A2);W2(A3);R1(A1);R1(A2);R1(A3) Suppose there are two blue products, A1, A2:<br>
slide100. W2(A3);R1(A1);R1(A2);R1(A1);R1(A2);R1(A3) Phantom Problem R1(A1);R1(A2);W2(A3);R1(A1);R1(A2);R1(A3) Suppose there are two blue products, A1, A2:<br>
slide101. Phantom Problem A “phantom” is a tuple that is invisible during part of a transaction execution but not invisible during the entire execution

In our example:
T1: reads list of products
T2: inserts a new product
T1: re-reads: a new product appears ! CSE 344 - 2017au 101<br>
slide102. Dealing With Phantoms Lock the entire table
Lock the index entry for ‘blue’
If index is available
Or use predicate locks
A lock on an arbitrary predicate CSE 344 - 2017au 102 Dealing with phantoms is expensive !<br>
slide103. Summary of Serializability Serializable schedule = equivalent to a serial schedule
(strict) 2PL guarantees conflict serializability
What is the difference?
Static database:
Conflict serializability implies serializability
Dynamic database:
This no longer holds CSE 344 - 2017au 103<br>
slide104. Isolation Levels in SQL “Dirty reads”
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

“Committed reads”
SET TRANSACTION ISOLATION LEVEL READ COMMITTED

“Repeatable reads”
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ

Serializable transactions
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE CSE 344 - 2017au 104 ACID<br>
slide105. 1. Isolation Level: Dirty Reads “Long duration” WRITE locks
Strict 2PL
No READ locks
Read-only transactions are never delayed CSE 344 - 2017au 105 Possible problems: dirty and inconsistent reads<br>
slide106. 2. Isolation Level: Read Committed “Long duration” WRITE locks
Strict 2PL
“Short duration” READ locks
Only acquire lock while reading (not 2PL) CSE 344 - 2017au 106 Unrepeatable reads:
When reading same element twice,
may get two different values<br>
slide107. 3. Isolation Level: Repeatable Read “Long duration” WRITE locks
Strict 2PL
“Long duration” READ locks
Strict 2PL CSE 344 - 2017au 107 This is not serializable yet !!! Why ?<br>
slide108. 4. Isolation Level Serializable “Long duration” WRITE locks
Strict 2PL
“Long duration” READ locks
Strict 2PL
Predicate locking
To deal with phantoms CSE 344 - 2017au 108<br>
slide109. Beware! In commercial DBMSs:
Default level is often NOT serializable
Default level differs between DBMSs
Some engines support subset of levels!
Serializable may not be exactly ACID
Locking ensures isolation, not atomicity
Also, some DBMSs do NOT use locking and different isolation levels can lead to different pbs
Bottom line: Read the doc for your DBMS! CSE 344 - 2017au 109<br>
slide110. Demonstration with SQL Server Application 1:
create table R(a int);
insert into R values(1);
set transaction isolation level serializable;
begin transaction;
select * from R; -- get a shared lock

Application 2:
set transaction isolation level serializable;
begin transaction;
select * from R; -- get a shared lock
insert into R values(2); -- blocked waiting on exclusive lock
-- App 2 unblocks and executes insert after app 1 commits/aborts CSE 344 - 2017au 110<br>
slide111. Demonstration with SQL Server Application 1:
create table R(a int);
insert into R values(1);
set transaction isolation level repeatable read;
begin transaction;
select * from R; -- get a shared lock

Application 2:
set transaction isolation level repeatable read;
begin transaction;
select * from R; -- get a shared lock
insert into R values(3); -- gets an exclusive lock on new tuple
-- If app 1 reads now, it blocks because read dirty
-- If app 1 reads after app 2 commits, app 1 sees new value CSE 344 - 2017au 111<br>