Managing Concurrency in Web Applications. DBI 2007 HUJI-CS 2 Intersection of Concurrent Accesses A fundamental property of Web sites: Concurrent accesses.

Slides:



Advertisements
Similar presentations
Transactions - Concurrent access & System failures - Properties of Transactions - Isolation Levels 4/13/2015Databases21.
Advertisements

Chapter 16 Concurrency. Topics in this Chapter Three Concurrency Problems Locking Deadlock Serializability Isolation Levels Intent Locking Dropping ACID.
1 Lecture 11: Transactions: Concurrency. 2 Overview Transactions Concurrency Control Locking Transactions in SQL.
Manipulating Data Schedule: Timing Topic 60 minutes Lecture
Lock-Based Concurrency Control
Transaction Processing. Objectives After completing this lesson, you should be able to do the following: –Define transactions effectively for an application.
1 Data Concurrency David Konopnicki 1997 Revised by Mordo Shalom 2004.
Module 15: Managing Transactions and Locks. Overview Introduction to Transactions and Locks Managing Transactions SQL Server Locking Managing Locks.
Transaction Management and Concurrency Control
1 JDBC: Java Database Connectivity. 2 Introduction to JDBC JDBC is used for accessing databases from Java applications Information is transferred from.
Transaction Management and Concurrency Control
Transaction Management and Concurrency Control
Database Systems: Design, Implementation, and Management Eighth Edition Chapter 10 Transaction Management and Concurrency Control.
Database Management Systems I Alex Coman, Winter 2006
Chapter 9 Transaction Management and Concurrency Control
Database Administration Part 1 Chapter Six CSCI260 Database Applications.
Database Systems: Design, Implementation, and Management Eighth Edition Chapter 10 Transaction Management and Concurrency Control.
Transaction Management and Concurrency Control
1 Concurrency Control. 2 Transactions A transaction is a list of actions. The actions are reads (written R T (O)) and writes (written W T (O)) of database.
Transaction. A transaction is an event which occurs on the database. Generally a transaction reads a value from the database or writes a value to the.
Transactions and Locks Lesson 22. Skills Matrix Transaction A transaction is a series of steps that perform a logical unit of work. Transactions must.
Managing Transaction and Lock Vu Tuyet Trinh Hanoi University of Technology 1.
JDBC (Java Database Connectivity) SNU OOPSLA Lab. October 2005.
Transactions Sylvia Huang CS 157B. Transaction A transaction is a unit of program execution that accesses and possibly updates various data items. A transaction.
BIS Database Systems School of Management, Business Information Systems, Assumption University A.Thanop Somprasong Chapter # 10 Transaction Management.
DB Transactions CS143 Notes TRANSACTION: A sequence of SQL statements that are executed "together" as one unit:
Transactions1 Unit of work on a database. Transactions2 Transactions, concept Logical unit of work on the database –Examples Transfer money from bank.
Oracle Locking Michael Messina Principal Database Analyst Indiana University.
1cs Intersection of Concurrent Accesses A fundamental property of Web sites: Concurrent accesses by multiple users Concurrent accesses intersect.
ITEC 3220M Using and Designing Database Systems Instructor: Prof. Z. Yang Course Website: 3220m.htm
Transaction processing Book, chapter 6.6. Problem: With a single user…. you run a query, you get the results, you run the next, etc. But database life.
Concurrency and Transaction Processing. Concurrency models 1. Pessimistic –avoids conflicts by acquiring locks on data that is being read, so no other.
CMPT 354, Simon Fraser University, Fall 2008, Martin Ester 136 Database Systems I SQL Modifications and Transactions.
11/7/2012ISC329 Isabelle Bichindaritz1 Transaction Management & Concurrency Control.
Transactions and Locks A Quick Reference and Summary BIT 275.
Giovanni Chierico | May 2012 | Дубна Data Concurrency, Consistency and Integrity.
Transactions. Transaction: Informal Definition A transaction is a piece of code that accesses a shared database such that each transaction accesses shared.
15.1 Transaction Concept A transaction is a unit of program execution that accesses and possibly updates various data items. E.g. transaction to transfer.
©Silberschatz, Korth and Sudarshan14.1Database System Concepts - 6 th Edition Chapter 14: Transactions Transaction Concept Transaction State Concurrent.
Transaction Management Overview. Transactions Concurrent execution of user programs is essential for good DBMS performance. – Because disk accesses are.
Advanced Database- Dr. Arasteh1 Advanced Database Bahman Arasteh ( Ph.D, Software Engineering ) Department of Software Engineering, Azad University of.
CSC 411/511: DBMS Design Dr. Nan WangCSC411_L12_JDBC_MySQL 1 Transations.
JDBC Part II CS 124. More about JDBC Types Statement versus PreparedStatement Timeout NULL values Meta-data close() methods Exceptions Transactions JDBC.
JDBC (Java Database Connectivity)
Managing Concurrency in Web Applications
A Guide to SQL, Eighth Edition Chapter Six Updating Data.
1 Advanced Database Concepts Transaction Management and Concurrency Control.
Module 11: Managing Transactions and Locks
Database Systems: Design, Implementation, and Management Eighth Edition Chapter 10 Transaction Management and Concurrency Control.
10 Transaction Management and Concurrency Control MIS 304 Winter 2005.
©Bob Godfrey, 2002, 2005 Lecture 17: Transaction Integrity and Concurrency BSA206 Database Management Systems.
3 Database Systems: Design, Implementation, and Management CHAPTER 9 Transaction Management and Concurrency Control.
10 1 Chapter 10 - A Transaction Management Database Systems: Design, Implementation, and Management, Rob and Coronel.
Module 14: Managing Transactions and Locks. Overview Introducing Transactions and Locks Managing Transactions Understanding SQL Server Locking Architecture.
1 Transaction Processing Case Study. 2 Interaksi Proses There is table Sells(shop,beverage,price), and suppose that Joe’s Shop sells only Juice for $2.50.
In this session, you will learn to: Implement triggers Implement transactions Objectives.
Basic Web Application Development Instructor: Matthew Schurr.
Chapter 13 Managing Transactions and Concurrency Database Principles: Fundamentals of Design, Implementation, and Management Tenth Edition.
Locks, Blocks & Isolation Oh My!. About Me Keith Tate Data Professional for over 14 Years MCITP in both DBA and Dev tracks
COMP 430 Intro. to Database Systems Transactions, concurrency, & ACID.
Managing Concurrency in Web Applications
Transaction Management and Concurrency Control
LAB: Web-scale Data Management on a Cloud
On transactions, and Atomic Operations
Transactions, Locking and Query Optimisation
Chapter 10 Transaction Management and Concurrency Control
On transactions, and Atomic Operations
Objectives Define and describe transactions
Transactions and Concurrency
Chapter 14: Transactions
Presentation transcript:

Managing Concurrency in Web Applications

DBI 2007 HUJI-CS 2 Intersection of Concurrent Accesses A fundamental property of Web sites: Concurrent accesses by multiple users Concurrent accesses intersect at –Database accesses (read / write) –Execution of application code (Servlets / JSP) Users activate the same application objects: –Database Shared connection / connection pool –Servlet / JSP object For each Servlet / JSP, only one object is created

DBI 2007 HUJI-CS 3 Concurrency Hazards What are the potential problems? Inconsistency due to concurrent accesses –For example, generating IDs, verifying uniqueness of names, presenting information while being updated Transactions: Want to consider a sequence of operations as an atomic action –Until commitment, updates are partial (inconsistent) –On failure, the origin state is restored (rollback) –How do we disable the server from relying on partial information or such that may later be cancelled due to roll back?

DBI 2007 HUJI-CS 4 Handling Concurrency For managing concurrency in the level of Java code, use known Java tools –Synchronization, wait / notify, etc. For handling concurrency in database accesses, transactions are used Concurrent transactions use distinct connections But (generating) connections are expensive! –Use thread pools –Share connections whenever possible (e.g., simple reads)

DBI 2007 HUJI-CS 5 Thumbnail Rules Some concurrency problems can be solved at both the code and database levels In principle, prefer letting the database handle concurrency –Database research and vendors have put a lot of effort on handling concurrent transactions But you need to understand the exact model of transaction management that is implemented by your specific database engine –Next, transaction management in PostgreSQL

Transactions in PostgreSQL / JDBC

DBI 2007 HUJI-CS 7 Transactions and JDBC Transaction:Transaction: A sequence of statements that must all succeed (or all fail) together –e.g., updating several tables due to customer purchase Failure : System must reverse all previous actions Cannot leave DB in inconsistent state halfway through a transaction COMMIT = complete transaction ROLLBACK = cancel all actions

DBI 2007 HUJI-CS 8 An Example Suppose that we want to transfer money from bank account 13 to account 72: PreparedStatement pstmt = con.prepareStatement("update BankAccount set amount = amount + ? where accountId = ?"); pstmt.setInt(1,-100); pstmt.setInt(2, 13); pstmt.executeUpdate(); pstmt.setInt(1, 100); pstmt.setInt(2, 72); pstmt.executeUpdate(); What happens if this update fails?

DBI 2007 HUJI-CS 9 Transaction Life Cycle Through JDBC, transactions are not opened and closed explicitly A transaction starts on 1 st (successful) command –After a connection is established –After the previous transaction ends A transaction ends when COMMIT or ROLLBACK are applied –Either explicitly or implicitly (next slides) Multiple transactions are obtained by using multiple connections to the database

DBI 2007 HUJI-CS 10 Committing a Transaction How do we commit? Explicitly invoking Connection.commit() Implicitly –After every query execution, if AutoCommit is true –When the user normally disconnects (i.e., appropriately closes the connection) –In some DBs: After invoking a DDL command (CREATE, DROP, RENAME, ALTER, …)

DBI 2007 HUJI-CS 11 Automatic Commitment A Connection object has a boolean AutoCommit If AutoCommit is true (default), then every statement is automatically committed If AutoCommit is false, then each statement is added to an ongoing transaction Change using setAutoCommit(boolean) If AutoCommit is false, need to explicitly commit or rollback the transaction using Connection.commit() and Connection.rollback()

DBI 2007 HUJI-CS 12 Rolling Back Rolling Back: Undoing any change to data within the current transaction The ROLLBACK command explicitly rolls back (and ends) the current transaction ROLLBACK is implicitly applied when the user abnormally disconnects (i.e., without appropriately closing the connection)

DBI 2007 HUJI-CS 13 Fixed Example con.setAutoCommit(false); try { PreparedStatement pstmt = con.prepareStatement("update BankAccount set amount = amount + ? where accountId = ?"); pstmt.setInt(1,-100); pstmt.setInt(2, 13); pstmt.executeUpdate(); pstmt.setInt(1, 100); pstmt.setInt(2, 72); pstmt.executeUpdate(); con.commit(); catch (SQLException e) { con.rollback(); …; }

Transaction Isolation

DBI 2007 HUJI-CS 15 Isolation Issues How do different transactions interact? Does a running transaction see uncommitted changes? Does it see committed changes? Can two transactions update the same row? –Next part …

DBI 2007 HUJI-CS 16 Isolation Levels The isolation level determines the capabilities of a transaction to read/write data that is accessed by other transactions In PostgreSQL, two levels of isolation: 1.READ COMMITTED (default) 2.SERIALIZABLE Each transaction determines its isolation level –Connection.setTransactionIsolation(int level)

DBI 2007 HUJI-CS 17 READ COMMITED & SERIALIZABLE In principle, a query in PostgreSQL never reads uncommitted (i.e. dirty) data SERIALIZABLE: During the whole transaction, statements read only the changes that were committed by the time the transaction begun (and the changes made by the transaction itself) READ COMMITTED: A statement reads the data that was committed by the time the statement (not the transaction) begun

DBI 2007 HUJI-CS 18 Some Definitions Dirty reads:Dirty reads: A transaction reads data that is written by another, uncommitted transaction Non-repeatable reads:Non-repeatable reads: A transaction rereads data it previously read and finds that a committed transaction has modified or deleted that data Phantom reads:Phantom reads: A transaction re-executes a query returning a set of rows satisfying a search condition and finds that a committed transaction inserted additional rows that satisfy the condition

DBI 2007 HUJI-CS 19 READ COMMITED vs. SERIALIZABLE SERIALIZABLE READ COMMITED Impossible Dirty Reads ImpossiblePossible Non-repeatable Reads ImpossiblePossiblePhantom Reads

DBI 2007 HUJI-CS 20 What Happens Here (1)? CREATE TABLE pairs (x INTEGER, y INTEGER); select * from pairs insert into pairs values(1,1) select * from pairs COMMIT 2. select * from pairs 3. insert into pairs values(1,1) 6. select * from pairs 8. COMMIT select * from pairs insert into pairs values(1,2) select * from pairs COMMIT 4. select * from pairs 5. insert into pairs values(1,2) 7. select * from pairs 9. COMMIT T.1: R. COMMITTED T.2: SERIALIZABLE

DBI 2007 HUJI-CS 21 What Happens Here (2)? CREATE TABLE pairs (x INTEGER, y INTEGER); T.1: R. COMMITTED T.2: SERIALIZABLE insert into pairs values(1,1) COMMIT select * from pairs select * from pairs COMMIT 3. insert into pairs values(1,1) 4. COMMIT 5. select * from pairs 9. select * from pairs 10. COMMIT select * from pairs select * from pairs insert into pairs values(1,2) COMMIT 2. select * from pairs 6. select * from pairs 7. insert into pairs values(1,2) 8. COMMIT

DBI 2007 HUJI-CS 22 What Happens Here (3)? CREATE TABLE pairs (x INTEGER, y INTEGER); insert into pairs values(1,1) COMMIT select * from pairs select * from pairs COMMIT 2. insert into pairs values(1,1) 4. COMMIT 5. select * from pairs 9. select * from pairs 10. COMMIT select * from pairs select * from pairs insert into pairs values(1,2) COMMIT 3. select * from pairs 6. select * from pairs 7. insert into pairs values(1,2) 8. COMMIT T.1: SERIALIZABLE T.2: SERIALIZABLE Is it equivalent to any truly serial execution of the transactions?

Updates by Concurrent Transactions

DBI 2007 HUJI-CS 24Locks PostgreSQL controls concurrent access to data by deploying locks Each operation on the database (select, update, insert, create, drop, etc.) requires some lock to be obtained by the running transaction –If a lock is not available, the transaction is blocked –Some operations may specify NOWAIT, i.e., fail if the lock is not available Locks are applied to either whole tables or to (sets of) specific rows

DBI 2007 HUJI-CS 25 Table-Level Locks Several types of table locks –For example, ACCESS and ROW For each lock type, two versions: –Shared: Can be held by multiple transactions –Exclusive: Other transactions cannot have this lock (shared or exclusive) Some locks prevent locks of other types to be obtained by other transactions –For instance, the lock ACCESS EXCLUSIVE on a table conflicts with all types of keys

DBI 2007 HUJI-CS 26 Locking a Table To lock the table mytbl, use the command Acquires the ACCESS EXCLUSIVE lock –Thus, no transaction can read or update the table –This lock is also needed in ALTER TABLE & DROP TABLE This operation blocks until all locks on the table are released –With the addition of the optional keyword NOWAIT, this operation fails if the table is locked LOCK TABLE mytbl

DBI 2007 HUJI-CS 27 Row-Level Locks Row-level locks are applied to specific rows –Shared and exclusive One type: exclusive write lock –Required (and acquired automatically) whenever a row updated or deleted Querying (read) is not affected by row-level locks –Only writers are blocked (exclusive key) You can acquire a lock on a row (or set of rows) without (or before) modifying it by issuing the SELECT … FOR UPDATE query

DBI 2007 HUJI-CS 28 Concurrent Updates PostgreSQL disables one from updating a row that is updated by an uncommitted transaction –Table/row-level locks are held until the trans. ends –The second updating transaction is blocked until the lock is released (first one commits or rolls back) BEGIN UPDATE r END BEGIN UPDATE r END T1T1 T2T2 T 2 READ COMMITTED: Update applied when T 1 terminates T 2 SERIALIZABLE: T 1 commits: Update fails T 1 rolls back: Succeeds

DBI 2007 HUJI-CS 29 What Happens Here (5)? CREATE TABLE pairs (x INTEGER, y INTEGER); insert into pairs values(1,1) COMMIT update pairs set y=3 where x= select * from pairs COMMIT insert into pairs values(1,1) COMMIT update pairs set y=3 where x= select * from pairs COMMIT update pairs set y=2 where x= select * from pairs COMMIT update pairs set y=2 where x= select * from pairs COMMIT T.1: R. COMMITTED T.2: SERIALIZABLE

DBI 2007 HUJI-CS 30 What Happens Here (4)? CREATE TABLE pairs (x INTEGER, y INTEGER); insert into pairs values(1,1) COMMIT update pairs set y=3 where x=1??? insert into pairs values(1,1) COMMIT update pairs set y=3 where x=1??? update pairs set y=2 where x= select * from pairs COMMIT update pairs set y=2 where x= select * from pairs COMMIT T.1: SERIALIZABLE T.2: SERIALIZABLE