CH 15 Updated
CH 15 Updated
Transaction Concept
● A transaction is a unit of program execution that accesses and possibly
updates various data items.
● A transaction must see a consistent database.
● During transaction execution the database may be temporarily inconsistent.
● When the transaction completes successfully (is committed), the database must
be consistent.
● After a transaction commits, the changes it has made to the database persist,
even if there are system failures.
● Multiple transactions can execute in parallel.
● Two main issues to deal with:
● Failures of various kinds, such as hardware failures and system crashes
● Concurrent execution of multiple transactions
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.
Example of Fund Transfer
● 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,
the system should ensure that its updates are not reflected in the database, else an
inconsistency will result.
● Consistency requirement – the sum of A and B is unchanged by the execution of
the transaction.
Example of Fund Transfer (Cont.)
● Isolation requirement — if between steps 3 and 6, another transaction 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).
● Isolation can be ensured trivially by running transactions serially, that is one
after the other.
● However, executing multiple transactions concurrently has significant benefits
● 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 despite failures.
Transaction State
● Active – the initial state; the transaction stays in this state while it is executing
● Partially committed – after the final statement has been executed.
● 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
● Committed – after successful completion.
Transaction State (Cont.)
Implementation of Atomicity and Durability
● The recovery-management component of a database system implements
the support for atomicity and durability.
● The shadow-database scheme:
● assume that only one transaction is active at a time.
● a pointer called db_pointer always points to the current consistent
copy of the database.
● all updates are made on a shadow copy of the database, and db_pointer
is made to point to the updated shadow copy only after the transaction
reaches partial commit and all updated pages have been flushed to disk.
● in case transaction fails, old consistent copy pointed to by db_pointer
can be used, and the shadow copy can be deleted.
Implementation of Atomicity and Durability (Cont.)
The shadow-database scheme:
Schedule 3 Schedule 6
Conflict Serializability (Cont.)
● Example of a schedule that is NOT conflict serializable because we can’t
swap the instructions:
y
Example Schedule (Schedule A) + Precedence Graph
Test for Conflict Serializability
● A schedule is conflict serializable if and only if
its precedence graph is acyclic (which doesn’t
cycles (loops)).
● Cycle-detection algorithms exist which take order n2
time, where n is the number of vertices in the graph.
● (Better algorithms take order n + e where e is the
number of edges.)
● If precedence graph is acyclic, the serializability order
can be obtained by a topological sorting of the graph.
● This is a linear order consistent with the partial
order of the graph.
● For example, one of the serializability order for
Schedule A would be
T5 → T1 → T3 → T2 → T4
(Can you identify another one?)
Recoverable Schedules
Need to address the effect of transaction failures on concurrently running transactions.
● If T8 should abort, T9 would have read (and possibly shown to the user) an inconsistent
database state. Hence, database must ensure that schedules are recoverable.
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 (so the schedule is recoverable)