Transaction Processing in ANSI SQL file:///Users/jrg/235-2021-SPRING/SLIDES/WEEK06/13transactionsinsql/13transactionsinsql.html#2
CSCI235 Database Systems Transaction Processing in ANSI SQL
Dr Janusz R. Getta
School of Computing and Information Technology - University of Wollongong
1 of 19 20/7/21, 7:41 am Transaction Processing in ANSI SQL file:///Users/jrg/235-2021-SPRING/SLIDES/WEEK06/13transactionsinsql/13transactionsinsql.html#2
Transaction Processing in ANSI SQL Outline
Dirty read phenomenon Non-repeatable read phenomenon Phantom phenomenon Isolation levels Phenomena Isolation levels versus phenomena Setting isolation levels in ANSI SQL
TOP Created by Janusz R. Getta, CSCI235 Database Systems, Spring 2021 2/19
2 of 19 20/7/21, 7:41 am Transaction Processing in ANSI SQL file:///Users/jrg/235-2021-SPRING/SLIDES/WEEK06/13transactionsinsql/13transactionsinsql.html#2
Dirty read phenomenon
A transaction reads uncommitted data created by a transaction that fails later on
Dirty read phenomenon Transaction 1 Transaction 2
SELECT budget FROM DEPARTMENT WHERE name = 'SALES';
2000
UPDATE DEPARTMENT SET BUDGET = BUDGET + 1000 WHERE NAME = 'Sales';
SELECT budget FROM DEPARTMENT WHERE name = 'SALES';
3000
ROLLBACK;
???
TOP Created by Janusz R. Getta, CSCI235 Database Systems, Spring 2021 3/19
3 of 19 20/7/21, 7:41 am Transaction Processing in ANSI SQL file:///Users/jrg/235-2021-SPRING/SLIDES/WEEK06/13transactionsinsql/13transactionsinsql.html#2
Reading only committed data
Reading only committed data Transaction 1 Transaction 2
SELECT budget FROM DEPARTMENT WHERE name = 'SALES';
2000
UPDATE DEPARTMENT SET BUDGET = BUDGET + 1000 WHERE NAME = 'Sales';
SELECT budget FROM DEPARTMENT WHERE name = 'SALES';
2000
ROLLBACK;
TOP Created by Janusz R. Getta, CSCI235 Database Systems, Spring 2021 4/19
4 of 19 20/7/21, 7:41 am Transaction Processing in ANSI SQL file:///Users/jrg/235-2021-SPRING/SLIDES/WEEK06/13transactionsinsql/13transactionsinsql.html#2
Transaction Processing in ANSI SQL Outline
Dirty read phenomenon Non-repeatable read phenomenon Phantom phenomenon Isolation levels Phenomena Isolation levels versus phenomena Setting isolation levels in ANSI SQL
TOP Created by Janusz R. Getta, CSCI235 Database Systems, Spring 2021 5/19
5 of 19 20/7/21, 7:41 am Transaction Processing in ANSI SQL file:///Users/jrg/235-2021-SPRING/SLIDES/WEEK06/13transactionsinsql/13transactionsinsql.html#2
Non-repeatable read phenomenon
A transaction reads the same data item few times and each a data item has a different value
Non-repeatable read phenomenon Transaction 1 Transaction 2
SELECT budget FROM DEPARTMENT WHERE name = 'SALES';
2000
UPDATE DEPARTMENT SET BUDGET = BUDGET + 1000 WHERE NAME = 'Sales';
COMMIT;
SELECT budget FROM DEPARTMENT WHERE name = 'SALES';
3000
???
TOP Created by Janusz R. Getta, CSCI235 Database Systems, Spring 2021 6/19
6 of 19 20/7/21, 7:41 am Transaction Processing in ANSI SQL file:///Users/jrg/235-2021-SPRING/SLIDES/WEEK06/13transactionsinsql/13transactionsinsql.html#2
Transaction Processing in ANSI SQL Outline
Dirty read phenomenon Non-repeatable read phenomenon Phantom phenomenon Isolation levels Phenomena Isolation levels versus phenomena Setting isolation levels in ANSI SQL
TOP Created by Janusz R. Getta, CSCI235 Database Systems, Spring 2021 7/19
7 of 19 20/7/21, 7:41 am Transaction Processing in ANSI SQL file:///Users/jrg/235-2021-SPRING/SLIDES/WEEK06/13transactionsinsql/13transactionsinsql.html#2
Phantom phenomenon
A transaction counts the total number of rows in the same table several times and each time the total number of rows is different
Phantom phenomenon Transaction 1 Transaction 2
SELECT count(*) FROM DEPARTMENT
20
DELETE DEPARTMENT WHERE NAME = 'Sales';
COMMIT;
SELECT count(*) FROM DEPARTMENT
19
TOP Created by Janusz R. Getta, CSCI235 Database Systems, Spring 2021 8/19
8 of 19 20/7/21, 7:41 am Transaction Processing in ANSI SQL file:///Users/jrg/235-2021-SPRING/SLIDES/WEEK06/13transactionsinsql/13transactionsinsql.html#2
No phantoms
No phantoms Transaction 1 Transaction 2
SELECT count(*) FROM DEPARTMENT
20
DELETE DEPARTMENT WHERE NAME = 'Sales';
COMMIT;
SELECT count(*) FROM DEPARTMENT
20
TOP Created by Janusz R. Getta, CSCI235 Database Systems, Spring 2021 9/19
9 of 19 20/7/21, 7:41 am Transaction Processing in ANSI SQL file:///Users/jrg/235-2021-SPRING/SLIDES/WEEK06/13transactionsinsql/13transactionsinsql.html#2
Transaction Processing in ANSI SQL Outline
Dirty read phenomenon Non-repeatable read phenomenon Phantom phenomenon Isolation levels Phenomena Isolation levels versus phenomena Setting isolation levels in ANSI SQL
TOP Created by Janusz R. Getta, CSCI235 Database Systems, Spring 2021 10/19
10 of 19 20/7/21, 7:41 am Transaction Processing in ANSI SQL file:///Users/jrg/235-2021-SPRING/SLIDES/WEEK06/13transactionsinsql/13transactionsinsql.html#2
Isolation levels
SQL provides four levels of isolation for database transactions Isolation levels are equivalent to correctness levels Isolation levels are defined in terms of several possible phenomena, or weird hard-to-explain occurrences of operations The following isolation levels are defined in ANSI SQL - READ UNCOMMITTED - READ COMMITTED - REPEATABLE READ - SERIALIZABLE Isolation levels are defined in the terms of so called phenomena The following phenomena are considered - Dirty read phenomenon - Non-repeatable read phenomenon - Phantom phenomenon
TOP Created by Janusz R. Getta, CSCI235 Database Systems, Spring 2021 11/19
11 of 19 20/7/21, 7:41 am Transaction Processing in ANSI SQL file:///Users/jrg/235-2021-SPRING/SLIDES/WEEK06/13transactionsinsql/13transactionsinsql.html#2
Transaction Processing in ANSI SQL Outline
Dirty read phenomenon Non-repeatable read phenomenon Phantom phenomenon Isolation levels Phenomena Isolation levels versus phenomena Setting isolation levels in ANSI SQL
TOP Created by Janusz R. Getta, CSCI235 Database Systems, Spring 2021 12/19
12 of 19 20/7/21, 7:41 am Transaction Processing in ANSI SQL file:///Users/jrg/235-2021-SPRING/SLIDES/WEEK06/13transactionsinsql/13transactionsinsql.html#2
Phenomena
Dirty read phenomenon - Read operations may access dirty data, i.e. data written by uncommitted transactions Non-repeatable read phenomenon - Different reads by a single transaction to the same data will not be repeatable, i.e. they may return different values Phantom phenomenon - A set of rows that transaction reads once might be a different set of rows if the transaction attempts to read them again
TOP Created by Janusz R. Getta, CSCI235 Database Systems, Spring 2021 13/19
13 of 19 20/7/21, 7:41 am Transaction Processing in ANSI SQL file:///Users/jrg/235-2021-SPRING/SLIDES/WEEK06/13transactionsinsql/13transactionsinsql.html#2
Transaction Processing in ANSI SQL Outline
Dirty read phenomenon Non-repeatable read phenomenon Phantom phenomenon Isolation levels Phenomena Isolation levels versus phenomena Setting isolation levels in ANSI SQL
TOP Created by Janusz R. Getta, CSCI235 Database Systems, Spring 2021 14/19
14 of 19 20/7/21, 7:41 am Transaction Processing in ANSI SQL file:///Users/jrg/235-2021-SPRING/SLIDES/WEEK06/13transactionsinsql/13transactionsinsql.html#2
Isolation levels versus phenomena
At READ UNCOMMITED isolation level a transaction may exhibit: - dirty read phenomenon, - non-repeatable read phenomenon, - phantom phenomenon At READ COMMITED isolation level a transaction may exhibit: - non-repeatable read phenomenon, - phantom phenomenon At REPEATABLE READ isolation level a transaction may exhibit: - phantom phenomenon At SERIALIZABLE isolation level a transaction may exhibit: - none of the phenomena
TOP Created by Janusz R. Getta, CSCI235 Database Systems, Spring 2021 15/19
15 of 19 20/7/21, 7:41 am Transaction Processing in ANSI SQL file:///Users/jrg/235-2021-SPRING/SLIDES/WEEK06/13transactionsinsql/13transactionsinsql.html#2
Isolation levels versus phenomena
Isolation levels versus phenomena Level Dirty Read Nonrepeatable Read Phantom ------READ UNCOMMITTED Possible Possible Possible
READ COMMITTED not possible Possible Possible
REPEATABLE READ not possible not possible Possible
SERIALIZABLE not possible not possible not possible
TOP Created by Janusz R. Getta, CSCI235 Database Systems, Spring 2021 16/19
16 of 19 20/7/21, 7:41 am Transaction Processing in ANSI SQL file:///Users/jrg/235-2021-SPRING/SLIDES/WEEK06/13transactionsinsql/13transactionsinsql.html#2
Transaction Processing in ANSI SQL Outline
Dirty read phenomenon Non-repeatable read phenomenon Phantom phenomenon Isolation levels Phenomena Isolation levels versus phenomena Setting isolation levels in ANSI SQL
TOP Created by Janusz R. Getta, CSCI235 Database Systems, Spring 2021 17/19
17 of 19 20/7/21, 7:41 am Transaction Processing in ANSI SQL file:///Users/jrg/235-2021-SPRING/SLIDES/WEEK06/13transactionsinsql/13transactionsinsql.html#2
Setting isolation levels in ANSI SQL
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
TOP Created by Janusz R. Getta, CSCI235 Database Systems, Spring 2021 18/19
18 of 19 20/7/21, 7:41 am Transaction Processing in ANSI SQL file:///Users/jrg/235-2021-SPRING/SLIDES/WEEK06/13transactionsinsql/13transactionsinsql.html#2
References
Elmasri R. and Navathe S. B., Fundamentals of Database Systems, Chapter 20.6 Transaction Support in SQL, 7th ed., The Pearson Education Ltd, 2017
TOP Created by Janusz R. Getta, CSCI235 Database Systems, Spring 2021 19/19
19 of 19 20/7/21, 7:41 am