concurrency control wxes 2103 database. content concurrency problems concurrency control concurrency...
Post on 14-Dec-2015
Embed Size (px)
- Slide 1
Concurrency Control WXES 2103 Database Slide 2 Content Concurrency Problems Concurrency Control Concurrency Control Approaches Slide 3 Concurrency Problems Data integrity and consistency problem may arise when several transactions are processed simultaneously (multi-user DB environment) Example: Ali and Siti have a joint savings account in a bank and each has been issued an ATM card. It may happen that both Ali and Siti withdraw money at the same time in 2 different locations. Slide 4 Concurrency Problems (cont) Time Alis Transaction Sitis Transaction 1 Read account balance (Balance = RM1000) 2 Read account balance (Balance = RM1000) 3 Withdraw RM600 (Balance = RM400) Write Balance = RM400 4 Withdraw RM700 (Insufficient Funds!) Slide 5 Concurrency Control This type of problems are caused by lack of coordination of the two transactions. Maybe the DBMS does not provide concurrency control. Concurrency control refers to the coordination of execution of multiple transactions in a multi-user DB environment. Slide 6 Concurrency Control 3 problems associated with concurrent processing : 1.Lost updates 2.Uncommitted data 3.Inconsistent retrievals Slide 7 Lost Updates Scenario Assume that customer balance (Bal) is 500. And 2 transaction T1 and T2 attempt to update the balance at the same time. TransactionActionComputation T1 Deposit 200 Bal = 500+200 (Bal = 700) T2 Withdraw 100 Bal = 700-100 (Bal = 600) Slide 8 The serial execution of these transaction yields the correct results (Bal = 600) Transaction requires several steps such as reading, modifying and writing. And it must be in correct sequence. See the correct sequence for the previous transactions. Lost Updates (cont) Slide 9 TimeTrans.Step Stored Value 1T1 Read Balance 500 2T1Balance=500+200 3T1 Write Balance 700 4T2 Read Balance 700 5T2Balance=700-100 6T2 Write Balance 600 Slide 10 Lost Updates (cont) TimeTrans.Step Stored Value 1T1 Read Balance 500 2T2 500 3T1Balance=500+200700 4T2Balance=500-100400 5T1 Write Balance (Lost Update) 700 6T2 Write Balance 400 The scheduler below shows incorrect sequence leading to lost updates Slide 11 Uncommitted Data Data are not committed when 2 transaction T1 and T2 are executed concurrently, and T1 is rolled back after T2 has already accessed the uncommitted data This violates the isolation property of transaction Slide 12 Uncommitted Data (cont) TransactionActionComputation T1 Deposit 200 Bal = 500+200 (Rolled back) T2 Withdraw 100 Bal = 500-100 (Bal = 400) This serial execution yields the correct results Balance = 400 Slide 13 Uncommitted Data (cont) TimeTrans.Step Stored Value 1T1 Read Balance 500 2T1Balance=500+200 3T1 Write Balance 700 4T1 Roll back 500 5T2 Read Balance 500 6T2Balance=500-100 7T2 Write Balance 400 Slide 14 The scheduler below shows incorrect sequence leading to lost updates TimeTrans.Step Stored Value 1T1 Read Balance 500 2T1Balance=500+200 3T1 Write Balance 700 4T2 Read Balance (Uncommitted data) 5T1 Roll back 500 6T2Balance=700-100 7T2 Write Balance (Lost update) 600 Slide 15 Inconsistent Retrieval Occurs when a transaction calculates an aggregate or summary function (e.g SUM) over a set of data, which the other transactions are updating The inconsistency happens because the transaction may read some data before they are changed and read other data after they are changed Slide 16 Locking If one user is updating the data, all the other users denied access to the same data Time stamping a unique global time stamp is assigned to each transaction Concurrency Control Approaches Slide 17 Locking A lock is a mechanism to control concurrent access to a data item Data items can be locked in two modes : 1. exclusive (X) mode. Data item can be both read as well as written. X-lock is requested using lock-X instruction. 1. exclusive (X) mode. Data item can be both read as well as written. X-lock is requested using lock-X instruction. 2. shared (S) mode. Data item can only be read. S-lock is requested using lock-S instruction. 2. shared (S) mode. Data item can only be read. S-lock is requested using lock-S instruction. Lock requests are made to concurrency-control manager. Transaction can proceed only after request is granted. Slide 18 Locking (cont) Lock-compatibility matrix A transaction may be granted a lock on an item if the requested lock is compatible with locks already held on the item by other transactions Slide 19 Locking (cont) Any number of transactions can hold shared locks on an item, but if any transaction holds an exclusive on the item no other transaction may hold any lock on the item. If a lock cannot be granted, the requesting transaction is made to wait till all incompatible locks held by other transactions have been released. The lock is then granted. Slide 20 Example of a transaction performing locking: T2: lock-S(A); read (A); unlock(A); lock-S(B); read (B); unlock(B); display(A+B) Locking as above is not sufficient to guarantee serializability if A and B get updated in-between the read of A and B, the displayed sum would be wrong. Slide 21 Deadlock Consider the partial schedule Neither T 3 nor T 4 can make progress executing lock-S(B) causes T 4 to wait for T 3 to release its lock on B, while executing lock- X(A) causes T 3 to wait for T 4 to release its lock on A. Slide 22 Deadlock (cont) Such a situation is called a deadlock. To handle a deadlock one of T 3 or T 4 must be rolled back and its locks released. To handle a deadlock one of T 3 or T 4 must be rolled back and its locks released. Slide 23 Methods to control deadlocks Deadlock prevention - transacation requesting a new lock is aborted if there is a possibility that it might cause a deadlock to occur Slide 24 Methods to control deadlocks Deadlock detection - DBMS periodically checks the DB for any deadlocks. If exist it aborts one of the transaction Deadlock recovery - requires each transaction locks all its data items before it begins execution Slide 25 Time stamping Each transaction is issued a timestamp when it enters the system. If an old transaction T i has time-stamp TS(T i ), a new transaction T j is assigned time-stamp TS(T j ) such that TS(T i )