U4 Transactions
U4 Transactions
Database System Concepts - 6th Edition 14.2 ©Silberschatz, Korth and Sudarshan
Transaction Concept
A transaction is a unit of program execution that
accesses and possibly updates various data items.
E.g., transaction to transfer $50 from account A to
account B:
1. read(A)
2. A := A – 50
3. write(A)
4. read(B)
5. B := B + 50
6. write(B)
Two main issues to deal with:
Failures of various kinds, such as hardware
failures and system crashes
Concurrent execution of multiple transactions.
Database System Concepts - 6th Edition 14.3 ©Silberschatz, Korth and Sudarshan
Required Properties of a
Transaction
Consider a transaction to transfer $50 from account A to
account B:
1. read(A)
2. A := A – 50
3. write(A)
4. read(B)
5. B := B + 50
6. write(B)
Atomicity requirement
If the transaction fails after step 3 and before step 6, money
will be “lost” leading to an inconsistent database state
Failure could be due to software or hardware
The system should ensure that updates of a partially
executed transaction are not reflected in the database
Durability requirement — once the user has been notified that
the transaction has completed (i.e., the transfer of the $50 has
taken place), the updates to the database by the transaction
must persist even if there are software or hardware failures.
Database System Concepts - 6th Edition 14.4 ©Silberschatz, Korth and Sudarshan
Required Properties of a Transaction
(Cont.)
Database System Concepts - 6th Edition 14.5 ©Silberschatz, Korth and Sudarshan
Required Properties of a Transaction
(Cont.)
Isolation requirement — if between steps 3 and 6 (of the fund
transfer transaction) , another transaction T2 is allowed to
access the partially updated database, it will see an
inconsistent database (the sum A + B will be less than it
should be).
T1 T2
1. read(A)
2. A := A – 50
3. write(A)
read(A), read(B), print(A+B)
4. read(B)
5. B := B + 50
6. write(B
Isolation can be ensured trivially by running transactions
serially
That is, one after the other.
However, executing multiple transactions concurrently has
significant benefits, as we will see later.
Database System Concepts - 6th Edition 14.6 ©Silberschatz, Korth and Sudarshan
ACID Properties
A transaction is a unit of program execution that accesses and
possibly updates various data items. To preserve the integrity
of data the database system must ensure:
Atomicity. Either all operations of the transaction are
properly reflected in the database or none are.
Consistency. Execution of a transaction in isolation
preserves the consistency of the database.
Isolation. Although multiple transactions may execute
concurrently, each transaction must be unaware of other
concurrently executing transactions. Intermediate
transaction results must be hidden from other
concurrently executed transactions.
That is, for every pair of transactions Ti and Tj, it
appears to Ti that either Tj, finished execution before Ti
started, or Tj started execution after Ti finished.
Durability. After a transaction completes successfully,
the changes it has made to the database persist, even if
there are system failures.14.7
Database System Concepts - 6 Edition
th
©Silberschatz, Korth and Sudarshan
Transaction State
Active – the initial state; the transaction stays in this state while
it is executing
Aborted – after the transaction has been rolled back and the
database restored to its state prior to the start of the
transaction. Two options after it has been aborted:
Database System Concepts - 6th Edition 14.8 ©Silberschatz, Korth and Sudarshan
Transaction State (Cont.)
Database System Concepts - 6th Edition 14.9 ©Silberschatz, Korth and Sudarshan
Concurrent Executions
Multiple transactions are allowed to run concurrently in the
system. Advantages are:
Database System Concepts - 6th Edition 14.10 ©Silberschatz, Korth and Sudarshan
Schedules
Schedule – a sequences of instructions that specify the
chronological order in which instructions of concurrent
transactions are executed
Database System Concepts - 6th Edition 14.11 ©Silberschatz, Korth and Sudarshan
Schedule 1
Let T1 transfer $50 from A to B, and T2 transfer 10% of the balance
from A to B.
An example of a serial schedule in which T1 is followed by T2 :
Database System Concepts - 6th Edition 14.12 ©Silberschatz, Korth and Sudarshan
Schedule 2
A serial schedule in which T2 is followed by T1 :
Database System Concepts - 6th Edition 14.13 ©Silberschatz, Korth and Sudarshan
Schedule 3
Let T1 and T2 be the transactions defined previously . The
following schedule is not a serial schedule, but it is
equivalent to Schedule 1.
Database System Concepts - 6th Edition 14.14 ©Silberschatz, Korth and Sudarshan
Schedule 4
The following concurrent schedule does not preserve the sum of “ A + B”
Database System Concepts - 6th Edition 14.15 ©Silberschatz, Korth and Sudarshan
Serializability
1. conflict serializability
2. view serializability
Database System Concepts - 6th Edition 14.16 ©Silberschatz, Korth and Sudarshan
Simplified view of transactions
instructions
write instructions.
Database System Concepts - 6th Edition 14.17 ©Silberschatz, Korth and Sudarshan
Conflicting Instructions
Let li and lj be two Instructions of transactions Ti and Tj
exists some item Q accessed by both li and lj, and at least one
of these instructions wrote Q.
Database System Concepts - 6th Edition 14.18 ©Silberschatz, Korth and Sudarshan
Conflict Serializability
Database System Concepts - 6th Edition 14.19 ©Silberschatz, Korth and Sudarshan
Conflict Serializability (Cont.)
Schedule 3 can be transformed into Schedule 6 -- a serial
schedule where T2 follows T1, by a series of swaps of non-
conflicting instructions. Therefore, Schedule 6 is conflict
serializable.
Schedule 3 Schedule 6
Database System Concepts - 6th Edition 14.20 ©Silberschatz, Korth and Sudarshan
Conflict Serializability (Cont.)
Example of a schedule that is not conflict serializable:
Database System Concepts - 6th Edition 14.21 ©Silberschatz, Korth and Sudarshan
Precedence Graph
Consider some schedule of a set of transactions
T1, T2, ..., Tn
Precedence graph — a direct graph where the
vertices are the transactions (names).
We draw an arc from Ti to Tj if the two
transaction conflict, and Ti accessed the data
item on which the conflict arose earlier.
We may label the arc by the item that was
accessed.
Example
A
Database System Concepts - 6th Edition 14.22 ©Silberschatz, Korth and Sudarshan
Testing for Conflict Serializability
A schedule is conflict serializable if and only if
its precedence graph is acyclic.
Database System Concepts - 6th Edition 14.23 ©Silberschatz, Korth and Sudarshan
Recoverable Schedules
Database System Concepts - 6th Edition 14.24 ©Silberschatz, Korth and Sudarshan
Cascading Rollbacks
Cascading rollback – a single transaction failure leads
to a series of transaction rollbacks. Consider the
following schedule where none of the transactions has
yet committed.
Database System Concepts - 6th Edition 14.25 ©Silberschatz, Korth and Sudarshan
Cascadeless Schedules
Database System Concepts - 6th Edition 14.26 ©Silberschatz, Korth and Sudarshan
Levels of Consistency in SQL-92
Serializable — default
committed) values.
read.
Database System Concepts - 6th Edition 14.27 ©Silberschatz, Korth and Sudarshan
Other Notions of Serializability
Database System Concepts - 6th Edition 14.28 ©Silberschatz, Korth and Sudarshan
View Serializability
Let S and S´ be two schedules with the same set of transactions. S
and S´ are view equivalent if the following three conditions are met,
for each data item Q,
writes alone.
Database System Concepts - 6th Edition 14.29 ©Silberschatz, Korth and Sudarshan
View Serializability (Cont.)
A schedule S is view serializable if it is view equivalent to
a serial schedule.
Every conflict serializable schedule is also view
serializable.
Below is a schedule which is view-serializable but not
conflict serializable.
Database System Concepts - 6th Edition 14.30 ©Silberschatz, Korth and Sudarshan
Test for View Serializability
Database System Concepts - 6th Edition 14.31 ©Silberschatz, Korth and Sudarshan