Transaction Processing
Transaction Processing
1
Transaction Concept
A transaction is a unit of program execution that accesses and possibly updates
various data items.
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.
3
Example of Fund Transfer (Cont.)
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)
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
However, executing multiple transactions concurrently has significant benefits, as we will see later.
5
ACID Properties
Atomicity. Either all operations of the transaction are properly reflected in the
database or none are.
Durability. After a transaction completes successfully, the changes it has made to the
database persist, even if there are system failures.
6
Transaction State
Active – the initial state; the transaction stays in this state while it is executing
Failed -- after the discovery that normal execution can no longer proceed.
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:
restart the transaction
can be done only if no internal logical error
kill the transaction
8
Concurrent Executions
Multiple transactions are allowed to run concurrently in the system.
Advantages are:
increased processor and disk utilization, leading to better transaction
throughput
E.g. one transaction can be using the CPU while another is reading from
or writing to the disk
reduced average response time for transactions: short transactions need
not wait behind long ones.
9
Problems due to Concurrent Executions
Several problems can occur when concurrent transactions execute in an
uncontrolled manner which are listed below:
The Lost Update Problem
The Dirty Read Problem
The Unrepeatable Read Problem
The Phantom Read Problem
10
Lost Update Problem
This problem occurs when multiple transactions execute concurrently and
updates from one or more transactions get lost.
Transaction T1 Transaction T2
Read (A)
Write(A)
Write (A)
Commit
Commit
Read(X)
In this example,
T2 gets to read a different value of X in its second reading.
T2 wonders how the value of X got changed because according to it, it is
running in isolation.
13
Phantom Read Problem
This problem occurs when a transaction reads all tuples in a table from the
database and when it reads the same later, it finds that the tuples in the table
are different.
Transaction T1 Transaction T2
Read (X)
Read (X)(e.g. Select * from student)
Write( X)
Read (X) )(e.g. Select * from student)
A transaction that fails to successfully complete its execution will have an abort
instruction as the last statement 15
Types of Schedules
Serial Schedule
Complete Schedule
Recoverable Schedule
Cascadeless Schedule
Strict Schedule
16
Serial Schedule
17
Complete Schedule
Transaction T1 Transaction T2
Read (A)
Read(B)
Write(A)
Commit
Write (B)
Commit
18
Recoverable Schedule
Transaction T1 Transaction T2 Transaction T1 Transaction T2
Read (A) Read (A)
Write(A) Write(A)
Read (A) Read (A)
Write(A) Write(A)
Commit
Read(B) Read(B)
Failed Failed Commit
19
Cascadeless Schedule
Transaction Transaction Transaction Transaction Transaction Transaction
T1 T2 T3 T1 T2 T3
20
Strict Schedule
Transaction T1 Transaction T2
Read (A)
Write(A)
Commit
Write (A)
Commit
21
Schedule 1
Let T1 transfer $50 from A to B, and T2 transfer 10% of the balance from A to B.
A serial schedule in which T1 is followed by T2 :
22
Schedule 2
A serial schedule where T2 is followed by T1
23
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.
25
Equivalent Schedule
Two schedules are said to be equivalent if they produce the
same final database results.
Types of Equivalent Schedule
Result Equivalent
Conflict Equivalent
View Equivalent
26
Result Equivalent Schedule
27
Conflicting Instructions
Instructions li and lj of transactions Ti and Tj respectively, conflict if and
only if there exists some item Q accessed by both li and lj, and at least one
of these instructions wrote Q.
1. li = read(Q), lj = read(Q). li and lj don’t conflict.
2. li = read(Q), lj = write(Q). They conflict.
3. li = write(Q), lj = read(Q). They conflict
4. li = write(Q), lj = write(Q). They conflict
29
Conflict Equivalent Schedule
For schedule S1-
The required order is-
R1(A) , W2(A)
W1(A) , R2(A)
W1(A) , W2(A)
30
View Equivalent
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,
3. FINAL WRITE: The transaction (if any) that performs the final write(Q) operation
in schedule S must also perform the final write(Q) operation in schedule S’.
As can be seen, view equivalence is also based purely on reads and writes alone.
31
Serializability
Basic Assumption – Each transaction preserves database consistency.
33
Conflict Serializability (Cont.)
Schedule 3 can be transformed into Schedule 6, a serial schedule where T2 follows T1,
by series of swaps of non-conflicting instructions.
Therefore Schedule 3 is conflict serializable.
Schedule 3 Schedule 6
34
Conflict Serializability (Cont.)
35
View Serializability
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.
Every view serializable schedule that is not conflict serializable has blind writes.
36
Other Notions of Serializability
The schedule below produces same outcome as the serial schedule < T1, T5 >, yet is
not conflict equivalent or view equivalent to it.
Determining such equivalence requires analysis of operations other than read and
write.
37
Testing for Serializability
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 1
38
Example: Schedule + Precedence Graph
T1 T2
T3 T4
T5
39
Test for Conflict Serializability
A schedule is conflict serializable if and only if its
precedence graph is acyclic.
40
Test for View Serializability
If the given schedule is conflict serializable, then it is view-serializable as
well. The opposite is not true.
There are two methods to check if the given schedule is View
Serializable, one is using the serial schedule, and another uses blind
writes and dependency graphs.
41