CMU SCS Carnegie Mellon Univ Dept of Computer
- Slides: 75
CMU SCS Carnegie Mellon Univ. Dept. of Computer Science 15 -415/615 - DB Applications C. Faloutsos – A. Pavlo Lecture#21: Concurrency Control – Part 1 (R&G ch. 17)
CMU SCS Last Class • • Introduction to Transactions ACID Concurrency Control Crash Recovery Faloutsos/Pavlo CMU SCS 15 -415/615 2
CMU SCS Last Class • For Isolation property, serial execution of transactions is safe but slow – We want to find schedules equivalent to serial execution but allow interleaving. • The way the DBMS does this is with its concurrency control protocol. Faloutsos/Pavlo CMU SCS 15 -415/615 3
CMU SCS Today’s Class • • Serializability Two-Phase Locking Deadlocks Lock Granularities Faloutsos/Pavlo CMU SCS 15 -415/615 4
CMU SCS Formal Properties of Schedules • Serializable Schedule: A schedule that is equivalent to some serial execution of the transactions. • Note: If each transaction preserves consistency, every serializable schedule preserves consistency. Faloutsos/Pavlo CMU SCS 15 -415/615 5
CMU SCS Example T 2 T 1 BEGIN A=A+100 B=B– 100 COMMIT BEGIN A=A*1. 06 B=B*1. 06 COMMIT • Consider two txns: – T 1 transfers $100 from B’s account to A’s – T 2 credits both accounts with 6% interest. • Assume at first A and B each have $1000. Faloutsos/Pavlo CMU SCS 15 -415/615 6
CMU SCS Interleaving Example (Good) Schedule T 1 T 2 TIME BEGIN A=A+100 BEGIN A=A*1. 06 B=B– 100 COMMIT B=B*1. 06 COMMIT ≡ BEGIN A=A+100 B=B– 100 COMMIT A=1166, B=954 Faloutsos/Pavlo BEGIN A=A*1. 06 B=B*1. 06 COMMIT A=1166, B=954 CMU SCS 15 -415/615 7
CMU SCS Interleaving Example (Bad) Schedule T 1 T 2 TIME BEGIN A=A+100 BEGIN A=A*1. 06 B=B*1. 06 COMMIT B=B– 100 COMMIT A=1166, B=960 Faloutsos/Pavlo ≢ A=1166, B=954 or A=1160, B=960 The bank lost $6! CMU SCS 15 -415/615 8
CMU SCS Formal Properties of Schedules • There are different levels of serializability: – Conflict Serializability – View Serializability All DBMSs support this. This is harder but allows for more concurrency. Nobody does this. Faloutsos/Pavlo CMU SCS 15 -415/615 9
CMU SCS Conflicting Operations • We need a formal notion of equivalence that can be implemented efficiently… – Base it on the notion of “conflicting” operations • Definition: Two operations conflict if: – They are by different transactions, – They are on the same object and at least one of them is a write. Faloutsos/Pavlo CMU SCS 15 -415/615 10
CMU SCS Conflict Serializable Schedules • Two schedules are conflict equivalent iff: – They involve the same actions of the same transactions, and – Every pair of conflicting actions is ordered the same way. • Schedule S is conflict serializable if: – S is conflict equivalent to some serial schedule. Faloutsos/Pavlo CMU SCS 15 -415/615 11
CMU SCS Conflict Serializability Intuition • Schedule S is conflict serializable if: – You are able to transform S into a serial schedule by swapping consecutive nonconflicting operations of different transactions. Faloutsos/Pavlo CMU SCS 15 -415/615 12
CMU SCS Conflict Serializability Intuition TIME Schedule T 1 T 2 BEGIN R(A) W(A) R(B) W(B) COMMIT Serial Schedule T 1 T 2 BEGIN R(A) W(A) ≡ BEGIN R(A) W(A) R(B) W(B) COMMIT Faloutsos/Pavlo CMU SCS 15 -415/615 BEGIN R(A) W(A) R(B) W(B) COMMIT 13
CMU SCS Conflict Serializability Intuition Schedule T 1 T 2 TIME BEGIN R(A) W(A) COMMIT Faloutsos/Pavlo Serial Schedule T 1 T 2 COMMIT ≢ BEGIN R(A) W(A) COMMIT CMU SCS 15 -415/615 BEGIN R(A) W(A) COMMIT 14
CMU SCS Serializability • Q: Are there any faster algorithms to figure this out other than transposing operations? Faloutsos/Pavlo CMU SCS 15 -415/615 15
CMU SCS Dependency Graphs • One node per txn. • Edge from Ti to Tj if: Ti Tj – An operation Oi of Ti conflicts with an operation Oj of Tj and – Oi appears earlier in the schedule than Oj. • Also known as a “precedence graph” Faloutsos/Pavlo CMU SCS 15 -415/615 16
CMU SCS Dependency Graphs • Theorem: A schedule is conflict serializable if and only if its dependency graph is acyclic. Faloutsos/Pavlo CMU SCS 15 -415/615 17
CMU SCS Example #1 Schedule T 1 T 2 BEGIN R(A) W(A) TIME Faloutsos/Pavlo A BEGIN T 1 R(A) W(A) R(B) W(B) COMMIT Dependency Graph T 2 B The cycle in the graph reveals the problem. The output of T 1 depends on T 2, and vice-versa. CMU SCS 15 -415/615 18
CMU SCS Example #2 – Lost Update Schedule T 1 T 2 BEGIN R(A) A = A-1 Dependency Graph A BEGIN T 1 TIME R(A) A = A-1 W(A) COMMIT T 2 A W(A) COMMIT Faloutsos/Pavlo CMU SCS 15 -415/615 19
CMU SCS Example #3 – Threesome Schedule T 1 T 2 TIME BEGIN R(A) W(A) R(B) W(B) COMMIT Faloutsos/Pavlo BEGIN R(B) W(B) COMMIT Dependency Graph T 3 BEGIN R(A) W(A) COMMIT T 1 B T 2 A T 3 CMU SCS 15 -415/615 20
CMU SCS Example #3 – Threesome • Q: Is this equivalent to a serial execution? • A: Yes (T 2, T 1, T 3) – Notice that T 3 should go after T 2, although it starts before it! Faloutsos/Pavlo CMU SCS 15 -415/615 21
CMU SCS Example #4 – Inconsistent Analysis TIME Schedule T 1 T 2 BEGIN R(A) A = A-10 W(A) R(B) B = B+10 W(B) COMMIT Faloutsos/Pavlo Dependency Graph A BEGIN T 1 R(A) sum = A R(B) sum += B ECHO(sum) COMMIT T 2 B Is it possible to create a schedule similar to this that is “correct” but still not conflict serializable? CMU SCS 15 -415/615 22
CMU SCS Example #4 – Inconsistent Analysis TIME Schedule T 1 T 2 BEGIN R(A) A = A-10 W(A) R(B) B = B+10 W(B) COMMIT Faloutsos/Pavlo Dependency Graph A BEGIN T 1 R(A) if(A≥ 0): sum = A cnt++ R(B) if(B≥ 0): sum += B cnt++ ECHO(cnt) COMMIT T 2 B T 2 counts the number of active accounts. CMU SCS 15 -415/615 23
CMU SCS View Serializability • Alternative (weaker) notion of serializability. • Schedules S 1 and S 2 are view equivalent if: – If T 1 reads initial value of A in S 1, then T 1 also reads initial value of A in S 2. – If T 1 reads value of A written by T 2 in S 1, then T 1 also reads value of A written by T 2 in S 2. – If T 1 writes final value of A in S 1, then T 1 also writes final value of A in S 2. Faloutsos/Pavlo CMU SCS 15 -415/615 24
CMU SCS View Serializability Schedule T 1 T 2 T 3 TIME BEGIN R(A) BEGIN W(A) Dependency Graph A T 1 A BEGIN W(A) COMMIT Faloutsos/Pavlo COMMIT W(A) COMMIT CMU SCS 15 -415/615 A A T 3 T 2 A 25
CMU SCS View Serializability Schedule T 1 T 2 T 3 TIME BEGIN R(A) BEGIN W(A) COMMIT Schedule T 1 T 2 T 3 COMMIT W(A) COMMIT ≡ VIEW BEGIN R(A) W(A) COMMIT Allows all conflict serializable schedules + “blind writes” Faloutsos/Pavlo CMU SCS 15 -415/615 BEGIN W(A) COMMIT 26
CMU SCS Serializability • View Serializability allows (slightly) more schedules than Conflict Serializability does. – But is difficult to enforce efficiently. • Neither definition allows all schedules that you would consider “serializable”. – This is because they don’t understand the meanings of the operations or the data (recall example #4) Faloutsos/Pavlo CMU SCS 15 -415/615 27
CMU SCS Serializability • In practice, Conflict Serializability is what gets used, because it can be enforced efficiently. • To allow more concurrency, some special cases get handled separately at the application level. Faloutsos/Pavlo CMU SCS 15 -415/615 28
CMU SCS Schedules All Schedules View Serializable Conflict Serializable Serial Faloutsos/Pavlo 15 -415/615 29
CMU SCS Today’s Class • • Serializability Two-Phase Locking Deadlocks Lock Granularities Faloutsos/Pavlo CMU SCS 15 -415/615 30
CMU SCS Executing with Locks TIME T 1 T 2 BEGIN X-LOCK(A) R(A) W(A) UNLOCK(A) Granted (T 1→A) Released (T 1→A) BEGIN X-LOCK(A) W(A) UNLOCK(A) S-LOCK(A) R(A) UNLOCK(A) COMMIT Faloutsos/Pavlo Lock Manager CMU SCS 15 -415/615 Granted (T 2→A) Released (T 2→A) Granted (T 1→A) Released (T 1→A) 31
CMU SCS Two-Phase Locking • Phase 1: Growing – Each txn requests the locks that it needs from the DBMS’s lock manager. – The lock manager grants/denies lock requests. • Phase 2: Shrinking – The txn is allowed to only release locks that it previously acquired. It cannot acquire new locks. Faloutsos/Pavlo CMU SCS 15 -415/615 32
CMU SCS Two-Phase Locking • The txn is not allowed to acquire/upgrade locks after the growing phase finishes. Transaction Lifetime Growing Phase Faloutsos/Pavlo Shrinking Phase TIME CMU SCS 15 -415/615 33
CMU SCS Two-Phase Locking • The txn is not allowed to acquire/upgrade locks after the growing phase finishes. Transaction Lifetime 2 PL Violation! Growing Phase Faloutsos/Pavlo Shrinking Phase TIME CMU SCS 15 -415/615 34
CMU SCS Executing with 2 PL TIME T 1 T 2 BEGIN X-LOCK(A) R(A) W(A) Granted (T 1→A) BEGIN X-LOCK(A) R(A) UNLOCK(A) COMMIT Denied! Released (T 1→A) W(A) UNLOCK(A) COMMIT Faloutsos/Pavlo Lock Manager CMU SCS 15 -415/615 Granted (T 2→A) Released (T 2→A) 35
CMU SCS Two-Phase Locking • 2 PL on its own is sufficient to guarantee conflict serializability (i. e. , schedules whose precedence graph is acyclic), but, it is subject to cascading aborts. Faloutsos/Pavlo CMU SCS 15 -415/615 36
CMU SCS 2 PL – Cascading Aborts TIME Schedule T 1 T 2 BEGIN X-LOCK(A) X-LOCK(B) R(A) W(A) UNLOCK(A) X-LOCK(A) R(A) W(A) R(B) ⋮ W(B) ABORT Faloutsos/Pavlo This is a permissible schedule in 2 PL, but we have to abort T 2 too. This is all wasted work! CMU SCS 15 -415/615 37
CMU SCS 2 PL Observations • There are schedules that are serializable but would not be allowed by 2 PL. • Locking limits concurrency. • May lead to deadlocks. • May still have “dirty reads” – Solution: Strict 2 PL Faloutsos/Pavlo CMU SCS 15 -415/615 38
CMU SCS Strict Two-Phase Locking • The txn is not allowed to acquire/upgrade locks after the growing phase finishes. • Allows only conflict serializable schedules, but it is actually stronger than needed. Release all locks at end of txn. Growing Phase Faloutsos/Pavlo Shrinking Phase CMU SCS 15 -415/615 TIME 39
CMU SCS Strict Two-Phase Locking • A schedule is strict if a value written by a txn is not read or overwritten by other txns until that txn finishes. • Advantages: – Does not incur cascading aborts. – Aborted txns can be undone by just restoring original values of modified tuples. Faloutsos/Pavlo CMU SCS 15 -415/615 40
CMU SCS Examples • T 1: Move $50 from Andy’s account to his bookie’s account. • T 2: Compute the total amount in all accounts and return it to the application. • Legend: – A → Andy’s account. – B → The bookie’s account. Faloutsos/Pavlo CMU SCS 15 -415/615 41
CMU SCS Non-2 PL Example TIME T 1 T 2 BEGIN X-LOCK(A) R(A) S-LOCK(A) A=A-50 W(A) UNLOCK(A) R(A) UNLOCK(A) S-LOCK(B) X-LOCK(B) R(B) UNLOCK(B) R(B) ECHO(A+B) B=B+50 COMMIT W(B) UNLOCK(B) COMMIT Initial State A=100, B=100 T 2 Output 150 42
CMU SCS 2 PL Example TIME T 1 T 2 Initial State BEGIN X-LOCK(A) R(A) S-LOCK(A) A=100, B=100 A=A-50 W(A) X-LOCK(B) UNLOCK(A) R(A) S-LOCK(B) T 2 Output R(B) B=B+50 W(B) UNLOCK(B) R(B) COMMIT UNLOCK(A) UNLOCK(B) ECHO(A+B) COMMIT 200 43
CMU SCS Strict 2 PL Example TIME T 1 BEGIN X-LOCK(A) R(A) A=A-50 W(A) X-LOCK(B) R(B) B=B+50 W(B) UNLOCK(A) UNLOCK(B) COMMIT T 2 BEGIN S-LOCK(A) Initial State A=100, B=100 T 2 Output 200 R(A) S-LOCK(B) R(B) ECHO(A+B) UNLOCK(A) UNLOCK(B) COMMIT 44
CMU SCS Schedules All Schedules View Serializable Conflict Serializable Avoid Cascading Abort Faloutsos/Pavlo Strict 2 PL Serial 15 -415/615 45
CMU SCS Today’s Class • • Serializability Two-Phase Locking Deadlocks Lock Granularities Faloutsos/Pavlo CMU SCS 15 -415/615 46
CMU SCS It Just Got Real, Son TIME T 1 Faloutsos/Pavlo T 2 BEGIN X-LOCK(A) S-LOCK(B) R(B) S-LOCK(A) R(A) X-LOCK(B) CMU SCS 15 -415/615 Lock Manager Granted (T 1→A) Granted (T 2→B) Denied! 47
CMU SCS Deadlocks • Deadlock: Cycle of transactions waiting for locks to be released by each other. • Two ways of dealing with deadlocks: – Deadlock detection – Deadlock prevention Faloutsos/Pavlo CMU SCS 15 -415/615 48
CMU SCS Deadlock Detection • The DBMS creates a waits-for graph: – Nodes are transactions – Edge from Ti to Tj if Ti is waiting for Tj to release a lock • The system periodically check for cycles in waits-for graph. Faloutsos/Pavlo CMU SCS 15 -415/615 49
CMU SCS Deadlock Detection TIME Schedule T 1 T 2 Waits-for Graph T 3 BEGIN S-LOCK(A) S-LOCK(D) X-LOCK(B) S-LOCK(C) S-LOCK(B) T 1 T 2 T 3 X-LOCK(C) X-LOCK(A) Faloutsos/Pavlo CMU SCS 15 -415/615 50
CMU SCS Deadlock Detection • How often should we run the algorithm? • How many txns are typically involved? • What do we do when we find a deadlock? Faloutsos/Pavlo CMU SCS 15 -415/615 51
CMU SCS Deadlock Handling • Q: What do we do? • A: Select a “victim” and rollback it back to break the deadlock. Faloutsos/Pavlo CMU SCS 15 -415/615 52
CMU SCS Deadlock Handling • Q: Which one do we choose? • A: It depends… – By age (lowest timestamp) – By progress (least/most queries executed) – By the # of items already locked – By the # of txns that we have to rollback with it • We also should consider the # of times a txn has been restarted in the past. Faloutsos/Pavlo CMU SCS 15 -415/615 53
CMU SCS Deadlock Handling • Q: How far do we rollback? • A: It depends… – Completely – Minimally (i. e. , just enough to release locks) Faloutsos/Pavlo CMU SCS 15 -415/615 54
CMU SCS Deadlock Prevention • When a txn tries to acquire a lock that is held by another txn, kill one of them to prevent a deadlock. • No waits-for graph or detection algorithm. Faloutsos/Pavlo CMU SCS 15 -415/615 55
CMU SCS Deadlock Prevention • Assign priorities based on timestamps: – Older → higher priority (e. g. , T 1 > T 2) • Two different prevention policies: – Wait-Die: If T 1 has higher priority, T 1 waits for T 2; otherwise T 1 aborts (“old wait for young”) – Wound-Wait: If T 1 has higher priority, T 2 aborts; otherwise T 1 waits (“young wait for old”) Faloutsos/Pavlo CMU SCS 15 -415/615 56
CMU SCS Deadlock Prevention T 1 T 2 BEGIN X-LOCK(A) ⋮ ⋮ T 1 Wound-Wait T 1 waits T 2 aborted Wait-Die Wound-Wait T 2 aborted T 2 waits T 2 BEGIN X-LOCK(A) ⋮ Faloutsos/Pavlo Wait-Die CMU SCS 15 -415/615 57
CMU SCS Deadlock Prevention • Q: Why do these schemes guarantee no deadlocks? • A: Only one “type” of direction allowed. • Q: When a transaction restarts, what is its (new) priority? • A: Its original timestamp. Why? Faloutsos/Pavlo CMU SCS 15 -415/615 58
CMU SCS Today’s Class • • Serializability Two-Phase Locking Deadlocks Lock Granularities Faloutsos/Pavlo CMU SCS 15 -415/615 59
CMU SCS Lock Granularities • When we say that a txn acquires a “lock”, what does that actually mean? – On an Attribute? Tuple? Page? Table? • Ideally, each txn should obtain fewest number of locks that is needed… Faloutsos/Pavlo CMU SCS 15 -415/615 60
CMU SCS Database Lock Hierarchy Database Table 1 Tuple 1 Attr 1 Faloutsos/Pavlo Table 2 … Tuple 2 Attr 2 … CMU SCS 15 -415/615 Tuple n Attr n 61
CMU SCS Example • T 1: Get the balance of Andy’s shady offshore bank account. • T 2: Increase Christos’ bank account balance by 1%. • Q: What locks should they obtain? Faloutsos/Pavlo CMU SCS 15 -415/615 62
CMU SCS Example • Q: What locks should they obtain? • A: Multiple – Exclusive + Shared for leafs of lock tree. – Special Intention locks for higher levels Faloutsos/Pavlo CMU SCS 15 -415/615 63
CMU SCS Intention Locks • Intention locks allow a higher level node to be locked in S or X mode without having to check all descendent nodes. • If a node is in an intention mode, then explicit locking is being done at a lower level in the tree. Faloutsos/Pavlo CMU SCS 15 -415/615 64
CMU SCS Intention Locks • Intention-Shared (IS): Indicates explicit locking at a lower level with shared locks. • Intention-Exclusive (IX): Indicates locking at lower level with exclusive or shared locks. Faloutsos/Pavlo CMU SCS 15 -415/615 65
CMU SCS Intention Locks • Shared+Intention-Exclusive (SIX): The subtree rooted by that node is locked explicitly in shared mode and explicit locking is being done at a lower level with exclusive-mode locks. Faloutsos/Pavlo CMU SCS 15 -415/615 66
CMU SCS Compatibility Matrix T 2 Wants T 1 Holds IS IX S SIX X Faloutsos/Pavlo IS IX S SIX X ✔ ✔ X X X ✔ X X X X X CMU SCS 15 -415/615 67
CMU SCS Example – Two-level Hierarchy Read Andy’s record in R. Update Christos’ record in R. T 1 T 2 T 1 IS T 2 T 1 IX S Tuple 1 Table R T 2 X Tuple 2 … Read Faloutsos/Pavlo Tuple n Write CMU SCS 15 -415/615 68
CMU SCS Example – Threesome • Assume three txns execute at same time: – T 1: Scan R and update a few tuples. – T 2: Read a single tuple in R. – T 3: Scan all tuples in R. Table R Tuple 1 Faloutsos/Pavlo Tuple 2 … CMU SCS 15 -415/615 Tuple n 69
CMU SCS Example – Threesome Scan R and update a few tuples. Scan all tuples in R. T 1 T 2 IS S Faloutsos/Pavlo T 2 T 3 SIX T 2 T 3 Read a single tuple in R. S Table R T 1 X Tuple 1 Tuple 2 Read … CMU SCS 15 -415/615 Tuple n Read+Write Read 70
CMU SCS Multiple Lock Granularities • Useful in practice as each txn only needs a few locks. • Intention locks help improve concurrency: – Intention-Shared (IS): Intent to get S lock(s) at finer granularity. – Intention-Exclusive (IX): Intent to get X lock(s) at finer granularity. – Shared+Intention-Exclusive (SIX): Like S and IX at the same time. Faloutsos/Pavlo CMU SCS 15 -415/615 71
CMU SCS Locking in Practice • You typically don’t set locks manually. • Sometimes you will need to provide the DBMS with hints to help it to improve concurrency. • Also useful for doing major changes. Faloutsos/Pavlo CMU SCS 15 -415/615 72
CMU SCS LOCK TABLE Postgres LOCK TABLE <table> IN <mode> MODE; My. SQL LOCK TABLE <table> <mode>; • Explicitly locks a table. • Not part of the SQL standard. – Postgres Modes: SHARE, EXCLUSIVE – My. SQL Modes: READ, WRITE Faloutsos/Pavlo CMU SCS 15 -415/615 73
CMU SCS SELECT. . . FOR UPDATE SELECT * FROM <table> WHERE <qualification> FOR UPDATE; • Perform a select and then sets an exclusive lock on the matching tuples. • Can also set shared locks: – Postgres: FOR SHARE – My. SQL: LOCK IN SHARE MODE Faloutsos/Pavlo CMU SCS 15 -415/615 74
CMU SCS Concurrency Control Summary • Conflict Serializability ↔ Correctness • Automatically correct interleavings: – Locks + protocol (2 PL, S 2 PL. . . ) – Deadlock detection + handling – Deadlock prevention Faloutsos/Pavlo CMU SCS 15 -415/615 75
- Carnegie mellon computational biology
- Carnegie mellon interdisciplinary
- Carnegie mellon software architecture
- Bomb lab secret phase
- Carnegie mellon software architecture
- Cmu sparcs
- Mism carnegie mellon
- Randy pausch time management
- Carnegie mellon what is rpa robotic process automation
- Carnegie mellon
- 18-213 cmu
- Cmu vpn
- Carnegie mellon
- Carnegie mellon
- Carnegie mellon
- Carnegie mellon
- Carnegie mellon fat letter
- Cmu 15-513
- Cmu bomb lab
- Mellon serbia iskustva
- Carneigh mellon
- Christina mellon
- Bny mellon health savings account
- Zebulun krahn
- Water mellon
- Mellon elf
- Mellon elf
- Mellon elf
- Scs desco
- Applied hydrology
- Lluvia neta
- Apa itu lengkung peralihan
- Infiltration indices
- Dioda diac
- Scs curve number
- Curva tiristor
- Color 9132005
- Scs.ryerson.ca harley
- Contoh rangkaian fet
- Scs reasonable person principle
- Scs thyristor
- Scs carleton
- Scs archiver
- Diagram superelevasi scs
- Scs elogs
- Scs lulu
- Scs methode
- Doc scs
- Skin carotenoid score
- Cmu computer networks
- Homorogeneous
- Synchronization in computer architecture
- Jaehoon yu
- Tracto rubroespinal
- Ch rahmoune
- State univ grant - sug ug
- Umbb inim
- Organigramme de la pharmacie
- Fs univ umbb
- Dysopyramide
- Université batna 2 mostefa ben boulaid
- Marion henne
- Centre universitaire nour bachir el-bayadh
- Prodoc univ nantes
- Univ prof titel
- Moodle tln
- Dr abou bekr
- Sfa univ poitiers
- (univ. caxias do sul) escolha a alternativa que completa
- Lon capa ohio university
- Ent iut valenciennes
- Mon ent univ tours
- Snv mentouri
- Conf univ dr
- Carnegie hero
- The rise