CSL 771: Database Implementation Transaction Processing. Maya Ramanath All material (including figures) from: Concurrency Control and Recovery in Database Systems Phil Bernstein, Vassos Hadzilacos and Nathan Goodman (http :// research.microsoft.com /en-us/people/ philbe / ccontrol.aspx ).
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation
Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement.Téléchargez la présentation en cliquant sur ce lien.Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.
F I N
Plus de contenu associé
Transcription de la présentation
CSL 771: Database ImplementationTransaction Processing Maya Ramanath All material (including figures) from: Concurrency Control and Recovery in Database Systems Phil Bernstein, VassosHadzilacos and Nathan Goodman (http://research.microsoft.com/en-us/people/philbe/ccontrol.aspx)
Transactions • Interaction with the DBMS through SQL updateAirlinessetprice = price - price*0.1, status = “cheap” whereprice< 5000 A transaction is a unit of interaction
ACID Properties • Atomicity • Consistency • Isolation • Durability Database system must ensure ACID properties
Atomicity and Consistency • Single transaction • Execution of a transaction: “all-or-nothing” Either a transaction completes in its entirety Or it “does not even start” • As if the transaction never existed • No partial effect must be visible 2 outcomes: A transaction COMMITs or ABORTs
Consistency and Isolation • Multiple transactions • Concurrent execution can cause an inconsistent database state • Each transaction executed as if isolated from the others
Durability • If a transaction commits the effects are permanent • But, durability has a bigger scope • Catastrophic failures (floods, fires, earthquakes)
What we will study… • Concurrency Control • Ensuring atomicity, consistency and isolation when multiple transactions are executed concurrently • Recovery • Ensuring durability and consistency in case of software/hardware failures
Terminology • Data item • A tuple, table, block • Read (x) • Write (x, 5) • Start (T) • Commit (T) • Abort (T) • Active Transaction • A transaction which has neither committed nor aborted
High level model Transaction 2 Transaction 1 Transaction n Transaction Manager Scheduler Disk Recovery Manager Cache Manager
Recoverability (1/2) • Transaction T Aborts • T wrote some data items • T’ read items that T wrote • DBMS has to… • Undo the effects of T • Undo effects of T’ • But, T’ has already committed
Recoverability (2/2) • Let T1,…,Tn be a set of transactions • Ti reads a value written by Tk, k < i • An execution of transactions is recoverable if Ti commits after all Tk commit
Cascading Aborts (2/2) • Recoverable executions do not prevent cascading aborts • How can we prevent them then ?
What we learnt so far… Reading a value, committing a transaction Recoverable with cascading aborts Recoverable without cascading aborts Not recoverable
Strict Schedule (1/2) • “Undo”-ing the effects of a transaction • Restore the before image of the data item Equivalent to Final value of y: 3
Strict Schedule (2/2) Initial value of x: 1 Should x be restored to 1 or 3? T1 restores x to 3? T2 restores x to 2? Do not read or write a value which has been written by an active transaction until that transaction has committed or aborted
Serializable Schedules • Serial schedule • Simply execute transactions one after the other • A serializableschedule is one which equivalent to some serial schedule
Serializable Schedules T1: op11, op12, op13 T2: op21, op22, op23, op24 • Serial schedule • Simply execute transactions one after the other op11, op12, op13 op21, op22, op23, op24 op11, op12, op13 op21, op22, op23, op24 • Serializable schedule • Interleave operations • Ensure end result is equivalent to some serial schedule
Histories (1/3) • Operations of transaction T can be represented by a partial order. r1[x] w1[z] c1 r1[y]
Histories (2/3) • Conflicting operations • Of two ops operating on the same data item, if one of them is a write, then the ops conflict • An order has to be specified for conflicting operations
Serializable Histories • The goal: Ensure that the interleaving operations guarantee a serializable history. • The method • When are two histories equivalent? • When is a history serial?
Equivalence of Histories (1/2) H ≅H’ if • they are defined over the same set of transactions and they have the same operations • they order conflicting operations the same way
Equivalence of Histories (2/2) y Source: Concurrency Control and Recovery in Database Systems: Bernstein, Hadzilacos and Goodman
Serial History • A complete history is serial if for every pair of transactions Ti and Tk, • all operations of Ti occur before Tk OR • all operations of Tk occur before Ti • A history is serializableif its committed projection is equivalent to a serial history.
Serializability Theorem A history H is serializable if its serialization graph SG(H) is acyclic On your own How do recoverability, strict schedules, cascading aborts fit into the big picture?
High level model Transaction 2 Transaction 1 Transaction n Transaction Manager Scheduler Disk Recovery Manager Cache Manager
Transaction Management Transaction 1 Transaction 2 Transaction 3 . . . Transaction n • Transaction Manager • Receives Transactions • Sends operations to scheduler Read1(x) Write2(y,k) Read2(x) Commit1 Disk • Scheduler • Execute op • Reject op • Delay op
Locking • Each data item x has a lock associated with it • If T wants to access x • Scheduler first acquires a lock on x • Only one transaction can hold a lock on x • T releases the lock after processing Locking is used by the scheduler to ensure serializability
Notation • Read lock and write lock rl[x], wl[x] • Obtaining read and write locks rli[x], wli[x] • Lock table • Entries of the form [x, r, Ti] • Conflicting locks • pli[x], qlk[y], x = y and p,q conflict • Unlock rui[x], wui[x]
Basic 2-Phase Locking (2PL) RULE 2 pli[x] cannot be released until pi[x] is completed RULE 1 Receive pi[x] is qlk[x] set such that p and q conflict? NO Acquire pli[x] RULE 3 (2 Phase Rule) Once a lock is releasedno other locks may be obtained. YES pi[x] scheduled pi[x] delayed
The 2-phase rule Once a lock is releasedno other locks may be obtained. T1: r1[x] w1[y] c1 T2: w2[x] w2[y] c2 H = rl1[x] r1[x] ru1[x]wl2[x] w2[x] wl2[y] w2[y] wu2[x] wu2[y] c2wl1[y] w1[y] wu1[y] c1 T1 T2
Correctness of 2PL 2PL always produces serializable histories Proof outline STEP 1: Characterize properties of the scheduler STEP 2: Prove that any history with these properties is serializable (That is, SG(H) is acyclic)
Deadlocks (2/2) Strategies to deal with deadlocks • Timeouts • Leads to inefficiency • Detecting deadlocks • Maintain a wait-for graph, cycle indicates deadlock • Once a deadlock is detected, break the cycle by aborting a transaction • New problem: Starvation
Conservative 2PL • Avoids deadlocks altogether • T declares its readset and writeset • Scheduler tries to acquire all required locks • If not all locks can be acquired, T waits in a queue • T never “starts” until all locks are acquired • Therefore, it can never be involved in a deadlock On your own Strict 2PL (2PL which ensures only strict schedules)
Extra Information • Assumption: Data items are organized in a tree Can we come up with a better (more efficient) protocol?
Tree Locking Protocol (1/3) RULE 2 if x is an intermediate node, and y is a parent of x, the ali[x] is possible only if ali[y] RULE 1 Receive ai[x] NO is alk[x] ? RULE 2 RULE 3 ali[x] cannot be released until ai[x] is completed YES pi[x] scheduled ai[x] delayed RULE 4 Once a lock is releasedthe same lock may not be re-obtained.
Tree Locking Protocol (2/3) • Proposition: If Ti locks x before Tk, then for every v which is a descendant of x, if both Ti and Tk lock v, then Ti locks v before Tk. • Theorem: Tree Locking Protocol always produces Serializable Schedules
Tree Locking Protocol (3/3) • Tree Locking Protocol avoids deadlock • Releases locks earlier than 2PL BUT • Needs to know the access pattern to be effective • Transactions should access nodes from root-to-leaf
Multi-granularity Locking (1/3) • Granularity • Refers to the relative size of the data item • Attribute, tuple, table, page, file, etc. • Efficiency depends on granularity of locking • Allow transactions to lock at different granularities
Multi-granularity Locking (2/3) • Lock Instance Graph • Explicit and Implicit Locks • Intention read and intention write locks • Intention locks conflict with explicit read and write locks but not with other intention locks Source: Concurrency Control and Recovery in Database Systems: Bernstein, Hadzilacos and Goodman
Multi-granularity Locking (3/3) • To set rli[x] or irli[x], first hold irli[y] or iwli[y], such that y is the parent of x. • To set wli[x] or iwli[x], first hold iwli[y], such that y is the parent of x. • To schedule ri[x] (or wi[x]), Ti must hold rli[y] (or wli[y]) where y = x, or y is an ancestor of x. • To release irli[x] (or iwli[x]) no child of x can be locked by Ti
The Phantom Problem • How to lock a tuple, which (currently) does not exist? T1: r1[x1], r1[x2], r1[X], c1 T2: w[x3], w[X], c2 rl1[x1], r1[x1], rl1[x2], r1[x2], wl2[x3], wl[X], w2[x3], wu2[x3,X], c2, rl1[X], ru1[x1,x2,X], c1