Lecture 16-1 Computer Science 425 Distributed Systems CS 425 / ECE 428 Fall 2013 Indranil Gupta (Indy) October 17, 2013 Lecture 16 Concurrency Control.

Slides:



Advertisements
Similar presentations
Concurrency Control WXES 2103 Database. Content Concurrency Problems Concurrency Control Concurrency Control Approaches.
Advertisements

1 Lecture 11: Transactions: Concurrency. 2 Overview Transactions Concurrency Control Locking Transactions in SQL.
CS 542: Topics in Distributed Systems Transactions and Concurrency Control.
Transaction Management: Concurrency Control CS634 Class 17, Apr 7, 2014 Slides based on “Database Management Systems” 3 rd ed, Ramakrishnan and Gehrke.
CS6223: Distributed Systems
CSC271 Database Systems Lecture # 32.
CSE 486/586, Spring 2012 CSE 486/586 Distributed Systems Transactions Steve Ko Computer Sciences and Engineering University at Buffalo.
CMPT 401 Summer 2007 Dr. Alexandra Fedorova Lecture X: Transactions.
1 TRANSACTION & CONCURRENCY CONTROL Huỳnh Văn Quốc Phương Thái Thị Thu Thủy
1 Distribuerede systemer og sikkerhed – 18. marts 2002 zFrom Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design zEdition 3, © Addison-Wesley.
Computer Science 425 Distributed Systems Lecture 21 Transaction Processing and Concurrency Control Reading: Sections
Lecture 11: Transactions and Concurrency Control Haibin Zhu, PhD. Assistant Professor Department of Computer Science Nipissing University © 2002.
CSE 486/586, Spring 2013 CSE 486/586 Distributed Systems Concurrency Control Steve Ko Computer Sciences and Engineering University at Buffalo.
CSE 486/586, Spring 2013 CSE 486/586 Distributed Systems Concurrency Control Steve Ko Computer Sciences and Engineering University at Buffalo.
CSE 486/586, Spring 2014 CSE 486/586 Distributed Systems Concurrency Control Steve Ko Computer Sciences and Engineering University at Buffalo.
Transactions and concurrency control
L-16 Transactions 1. Important Lessons – Fault Tolerance Terminology & Background  Failure models Byzantine Fault Tolerance  Protocol design  with.
CMPT Dr. Alexandra Fedorova Lecture X: Transactions.
Distributed Systems Fall 2010 Transactions and concurrency control.
Transaction Management and Concurrency Control
Persistent State Service 1 Distributed Object Transactions  Transaction principles  Concurrency control  The two-phase commit protocol  Services for.
Transaction Processing: Concurrency and Serializability 10/4/05.
Transaction Management
9 Chapter 9 Transaction Management and Concurrency Control Hachim Haddouti.
Transactions and concurrency control
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Transaction Management Overview Chapter 16.
08_Transactions_LECTURE2 DBMSs should guarantee ACID properties (Atomicity, Consistency, Isolation, Durability). This is typically done by guaranteeing.
EE324 INTRO. TO DISTRIBUTED SYSTEMS LECTURE 13 TRANSACTIONS.
1cs Intersection of Concurrent Accesses A fundamental property of Web sites: Concurrent accesses by multiple users Concurrent accesses intersect.
Distributed Systems CS 425 / CSE 424 / ECE 428 Transactions & Concurrency Control  2010, I. Gupta, K. Nahrtstedt, S. Mitra, N. Vaidya, M. T. Harandi,
Chapter 12 Transactions 12.1 Introduction 12.2 Transactions 12.3Nested Transactions 12.4 Locks.
CSE 486/586 CSE 486/586 Distributed Systems Concurrency Control Steve Ko Computer Sciences and Engineering University at Buffalo.
CSE 486/586, Spring 2013 CSE 486/586 Distributed Systems Concurrency Control Steve Ko Computer Sciences and Engineering University at Buffalo.
Distributed Transactions CS425 /CSE424/ECE428 – Distributed Systems – Fall 2011 Nikita Borisov - UIUC Material derived from slides by I. Gupta, M. Harandi,
Transactions CPSC 356 Database Ellen Walker Hiram College (Includes figures from Database Systems by Connolly & Begg, © Addison Wesley 2002)
Concurrency Server accesses data on behalf of client – series of operations is a transaction – transactions are atomic Several clients may invoke transactions.
TRANSACTION MANAGEMENT R.SARAVANAKUAMR. S.NAVEEN..
Transactions and Concurrency Control Distribuerade Informationssystem, 1DT060, HT 2013 Adapted from, Copyright, Frederik Hermans.
Sekolah Tinggi Ilmu Statistik (STIS) 1 Dr. Said Mirza Pahlevi, M.Eng.
II.I Selected Database Issues: 2 - Transaction ManagementSlide 1/20 1 II. Selected Database Issues Part 2: Transaction Management Lecture 4 Lecturer: Chris.
Distributed Transactions Chapter – Vidya Satyanarayanan.
Distributed Processing Systems ( Concurrency Control ) 오 상 규 서강대학교 정보통신 대학원
Transactions and Concurrency Control. Concurrent Accesses to an Object Multiple threads Atomic operations Thread communication Fairness.
 2002 M. T. Harandi and J. Hou (modified: I. Gupta) Distributed Transactions.
Transaction Management Transparencies. ©Pearson Education 2009 Chapter 14 - Objectives Function and importance of transactions. Properties of transactions.
Slides for Chapter 12: Transactions and Concurrency Control From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3,
TRANSACTION & CONCURRENCY CONTROL 1. CONTENT 2  Transactions & Nested transactions  Methods for concurrency control  Locks  Optimistic concurrency.
Slides for Chapter 12: Transactions and Concurrency Control From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3,
EE324 INTRO. TO DISTRIBUTED SYSTEMS LECTURE 13 TRANSACTIONS.
3 Database Systems: Design, Implementation, and Management CHAPTER 9 Transaction Management and Concurrency Control.
Distributed Transactions What is a transaction? (A sequence of server operations that must be carried out atomically ) ACID properties - what are these.
Distributed Systems Lecture 12 Concurrency and replication control 1.
CSE 486/586 CSE 486/586 Distributed Systems Concurrency Control Steve Ko Computer Sciences and Engineering University at Buffalo.
Transaction Management
Concurrency Control.
Part- A Transaction Management
CSE 486/586 Distributed Systems Concurrency Control --- 1
Chapter 10 Transaction Management and Concurrency Control
Concurrency Control WXES 2103 Database.
Chapter 15 : Concurrency Control
CSE 486/586 Distributed Systems Concurrency Control --- 2
CSE 486/586 Distributed Systems Concurrency Control --- 3
Distributed Transactions
Transaction management
UNIVERSITAS GUNADARMA
Slides for Chapter 12: Transactions and Concurrency Control
TRANSACTION & CONCURRENCY CONTROL
CSE 486/586 Distributed Systems Concurrency Control --- 2
CSE 486/586 Distributed Systems Concurrency Control --- 1
CSE 486/586 Distributed Systems Concurrency Control --- 3
Presentation transcript:

Lecture 16-1 Computer Science 425 Distributed Systems CS 425 / ECE 428 Fall 2013 Indranil Gupta (Indy) October 17, 2013 Lecture 16 Concurrency Control Reading: Chapter 16.1,2,4 and 17.1,2,3,5 (relevant parts)  2013, I. Gupta, K. Nahrtstedt, S. Mitra, N. Vaidya, M. T. Harandi, J. Hou

Lecture 16-2 Banking transaction for a customer (e.g., at ATM or browser) Transfer $100 from saving to checking account; Transfer $200 from money-market to checking account; Withdraw $400 from checking account. Transaction (invoked at client): /* Every step is an RPC */ 1. savings.withdraw(100) /* includes verification */ 2. checking.deposit(100) /* depends on success of 1 */ 3. mnymkt.withdraw(200) /* includes verification */ 4. checking. deposit(200) /* depends on success of 3 */ 5. checking.withdraw(400) /* includes verification */ 6. dispense(400) 7. commit Transactions Client Server Transaction

Lecture 16-3 Bank Server: Coordinator Interface  All the following are RPCs from a client to the server  Transaction calls that can be made at a client, and return values from the server: openTransaction() -> trans; starts a new transaction and delivers a unique transaction identifier (TID) trans. This TID will be used in the other operations in the transaction. closeTransaction(trans) -> (commit, abort); ends a transaction: a commit return value indicates that the transaction has committed; an abort return value indicates that it has aborted. abortTransaction(trans); aborts the transaction.  TID can be passed implicitly (for other operations between open and close) with CORBA Transactions can be implemented using RPCs/RMIs!

Lecture 16-4 Bank Server: Account, Branch interfaces deposit(amount) deposit amount in the account withdraw(amount) withdraw amount from the account getBalance() -> amount return the balance of the account setBalance(amount) set the balance of the account to amount create(name) -> account create a new account with a given name lookup(name) -> account return a reference to the account with the given name branchTotal() -> amount return the total of all the balances at the branch Operations of the Branch interface Operations of the Account interface

Lecture 16-5 Transaction  Sequence of operations that forms a single step, transforming the server data from one consistent state to another.  All or nothing principle: a transaction either completes successfully, and the effects are recorded in the objects, or it has no effect at all. (even with multiple clients, or crashes)  A transactions is indivisible (atomic) from the point of view of other transactions  No access to intermediate results/states of other transactions  Free from interference by operations of other transactions But…  Transactions could run concurrently, i.e., with multiple clients  Transactions may be distributed, i.e., across multiple servers

Lecture 16-6 Transaction: 1. savings.deduct(100) 2. checking.add(100) 3. mnymkt.deduct(200) 4. checking.add(200) 5. checking.deduct(400) 6. dispense(400) 7. commit Transaction Failure Modes A failure at these points means the customer loses money; we need to restore old state A failure at these points does not cause lost money, but old steps cannot be repeated This is the point of no return A failure after the commit point (ATM crashes) needs corrective action; no undoing possible.

Lecture 16-7 Transactions in Traditional Databases (ACID)  Atomicity: All or nothing  Consistency: if the server starts in a consistent state, the transaction ends the server in a consistent state.  Isolation: Each transaction must be performed without interference from other transactions, i.e., the non-final effects of a transaction must not be visible to other transactions.  Durability: After a transaction has completed successfully, all its effects are saved in permanent storage.  Atomicity: store tentative object updates (for later undo/redo) – many different ways of doing this  Durability: store entire results of transactions (all updated objects) to recover from permanent server crashes.

Lecture 16-8 Concurrent Transactions:Lost Update Problem  One transaction causes loss of info. for another: consider three account objects Transaction T1Transaction T2 balance = b.getBalance() b.setBalance(balance*1.1) a.withdraw(balance* 0.1) c.withdraw(balance*0.1) T1/T2’s update on the shared object, “b”, is lost a: b:c: 280 c: 80 a: 220 b: 220 b:

Lecture 16-9 Conc. Trans.: Inconsistent Retrieval Prob.  Partial, incomplete results of one transaction are retrieved by another transaction. Transaction T1Transaction T2 a.withdraw(100) total = a.getBalance() total = total + b.getBalance b.deposit(100) total = total + c.getBalance T1’s partial result is used by T2, giving the wrong result for T a: b: 00 a: c: total 300 b:

Lecture  An interleaving of the operations of 2 or more transactions is said to be serially equivalent if the combined effect is the same as if these transactions had been performed sequentially (in some order). Transaction T1 Transaction T2 balance = b.getBalance() b.setBalance(balance*1.1) balance = b.getBalance() b.setBalance(balance*1.1) a.withdraw(balance* 0.1) c.withdraw(balance*0.1) Concurrency Control: “Serial Equivalence” a: b:c: 278 c: a: 242 b: == T1 (complete) followed by T2 (complete)

Lecture  The effect of an operation refers to  The value of an object set by a write operation  The result returned by a read operation.  Two operations are said to be conflicting operations, if their combined effect depends on the order they are executed, e.g., read-write, write-read, write-write (all on same variables). NOT read-read, NOT on different variables.  Two transactions are serially equivalent if and only if all pairs of conflicting operations (pair containing one operation from each transaction) are executed in the same order (transaction order) for all objects (data) they both access.  Why? Can start from original operation sequence and swap the order of non-conflicting operations to obtain a series of operations where one transaction finishes completely before the second transaction starts  Why is the above result important? Because: Serial equivalence is the basis for concurrency control protocols for transactions. Checking Serial Equivalence – Conflicting Operations

Lecture Read and Write Operation Conflict Rules Operations of different transactions ConflictReason read NoBecause the effect of a pair ofread operations does not depend on the order in which they are executed readwriteYesBecause the effect of aread and awrite operation depends on the order of their execution write YesBecause the effect of a pair ofwrite operations depends on the order of their execution

Lecture  An interleaving of the operations of 2 or more transactions is said to be serially equivalent if the combined effect is the same as if these transactions had been performed sequentially (in some order). Transaction T1 Transaction T2 balance = b.getBalance() b.setBalance(balance*1.1) balance = b.getBalance() b.setBalance(balance*1.1) a.withdraw(balance* 0.1) c.withdraw(balance*0.1) Concurrency Control: “Serial Equivalence” a: b:c: 278 c: a: 242 b: == T1 (complete) followed by T2 (complete) Pairs of Conflicting Operations

Lecture Conflicting Operators Example Transaction T1 Transaction T2 x= a.read() a.write(20) y = b.read() b.write(30) b.write(x) z = a.read() x= a.read() a.write(20) z = a.read() b.write(x) y = b.read() b.write(30) Serially equivalent interleaving of operations (why?) Conflicting Ops. Non- serially equivalent interleaving of operations

Lecture Inconsistent Retrieval Prob – Caught!  Partial, incomplete results of one transaction are retrieved by another transaction. Transaction T1Transaction T2 a.withdraw(100) total = a.getBalance() total = total + b.getBalance b.deposit(100) total = total + c.getBalance T1’s partial result is used by T2, giving the wrong result for T a: b: 00 a: c: total 300 b:

Lecture A Serially Equivalent Interleaving of T1 and T2 TransactionT1: a.withdraw(100); b.deposit(100) TransactionT2: aBranch.branchTotal() a.withdraw(100); $100 b.deposit(100) $300 total = a.getBalance() $100 total = total+b.getBalance() $400 total = total+c.getBalance()...

Lecture  How can we prevent isolation from being violated?  Concurrent operations must be consistent:  If trans.T has executed a read operation on object A, a concurrent trans. U must not write to A until T commits or aborts.  If trans. T has executed a write operation on object A, a concurrent U must not read or write to A until T commits or aborts.  How to implement this?  First cut: locks Implementing Concurrent Transactions

Lecture  Exclusive Locks Transaction T1 Transaction T2 OpenTransaction() balance = b.getBalance() OpenTransaction() balance = b.getBalance() b.setBalance(balance*1.1) a.withdraw(balance* 0.1) CloseTransaction() b.setBalance(balance*1.1) c.withdraw(balance*0.1) CloseTransaction() Example: Concurrent Transactions Lock B Lock A UnLock B UnLock A Lock C UnLock B UnLock C … WAIT on B Lock B …

Lecture  Transaction managers (on server side) set locks on objects they need. A concurrent trans. cannot access locked objects.  Two phase locking:  In the first (growing) phase of the transaction, new locks are only acquired, and in the second (shrinking) phase, locks are only released.  A transaction is not allowed acquire any new locks, once it has released any one lock.  Strict two phase locking:  Locking on an object is performed only before the first request to read/write that object is about to be applied.  Unlocking is performed by the commit/abort operations of the transaction coordinator.  To prevent dirty reads and premature writes, a transaction waits for another to commit/abort  However, use of separate read and write locks leads to more concurrency than a single exclusive lock – Next slide Basic Locking

Lecture non-exclusive lock compatibility Lock alreadyLock requested setreadwrite none OK OK read OKWAIT writeWAITWAIT  A read lock is promoted to a write lock when the transaction needs write access to the same object.  A read lock shared with other transactions’ read lock(s) cannot be promoted. Transaction waits for other read locks to be released.  Cannot demote a write lock to read lock during transaction – violates the 2P principle 2P Locking: Non-exclusive lock (per object)

Lecture  When an operation accesses an object:  if you can, promote a lock (nothing -> read -> write)  Don’t promote the lock if it would result in a conflict with another transaction’s already-existing lock  wait until all shared locks are released, then lock & proceed  When a transaction commits or aborts:  release all locks that were set by the transaction Locking Procedure in Strict-2P Locking

Lecture  Non-exclusive Locks Transaction T1 Transaction T2 OpenTransaction() balance = b.getBalance() OpenTransaction() balance = b.getBalance() b.setBalance(balance*1.1) Commit Example: Concurrent Transactions R-Lock B … Cannot Promote lock on B, Wait Promote lock on B

Lecture  What happens in the example below? Transaction T1 Transaction T2 OpenTransaction() balance = b.getBalance() OpenTransaction() balance = b.getBalance() b.setBalance(balance*1.1) b.setBalance=balance*1.1 Example: Concurrent Transactions R-Lock B … Cannot Promote lock on B, Wait …

Lecture Deadlocks  Necessary conditions for deadlocks  Non-shareable resources (exclusive lock modes)  No preemption on locks  Hold & Wait or Circular Wait T U Wait for Held by Wait for A B T U Held by Wait for A B V W... Wait for Held by Hold & Wait Circular Wait

Lecture Naïve Deadlock Resolution Using Timeout Transaction TTransaction U OperationsLocksOperationsLocks a.deposit(100); write lock A b.deposit(200) write lock B b.withdraw(100) waits for U ’s a.withdraw(200); waits for T’s lock onB A (timeout elapses) T’s lock onA becomes vulnerable, unlockA, abort T a.withdraw(200); write locksA unlockA, B Disadvantages?

Lecture Strategies to Fight Deadlock  Lock timeout (costly and open to false positives)  Deadlock Prevention: violate one of the necessary conditions for deadlock (from 2 slides ago), e.g., lock all objects before transaction starts, aborting entire transaction if any fails  Deadlock Avoidance: Have transactions declare max resources they will request, but allow them to lock at any time (Banker’s algorithm)  Deadlock Detection: detect cycles in the wait-for graph, and then abort one or more of the transactions in cycle

Lecture Summary Increasing concurrency important because it improves throughput at server (means more revenue $$$) Applications are willing to tolerate temporary inconsistency and deadlocks in turn –Need to detect and prevent these Driven and validated by actual application characteristics – mostly-read transactions abound

Lecture Midterm Statistics Graduate Students: –average: 93 –median: 93 –standard deviation: 6.64 –min: 71 –max: 100 Undergraduate Students: –average: 84.8 –median: 86 –standard deviation: 9.64 –min: 60 –max: 100