Transaction Processing in ANSI SQL file:///Users/jrg/235-2021-SPRING/SLIDES/WEEK06/13transactionsinsql/13transactionsinsql.html#2

CSCI235 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 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