Transactions Chapter
Transactions Chapter
Transactions Chapter
► Transaction Concept
► Transaction State
► Implementation of Atomicity and Durability
► Concurrent Executions
► Serializability
► Recoverability
► Implementation of Isolation
► Transaction Definition in SQL
► Testing for Serializability.
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
inconsistent.
► When the transaction is committed, the database must be
consistent.
► Two main issues to deal with:
► Failures of various kinds, such as hardware failures and system
crashes
► Concurrent execution of multiple transactions
ACID Properties
To preserve 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)
► Consistency requirement – the sum of A and B is unchanged by the execution of
the transaction. Responsibility of application programmer
► 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. Ensuring atomicity is the responsibility of the
database system itself; specifically, it is handled by a component called the
transaction-management component,
Example of Fund Transfer
(Cont.)
► 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.
► We can guarantee durability by ensuring that either
► 1. The updates carried out by the transaction have been written
to disk before the transaction completes.
► 2. Information about the updates carried out by the transaction
and written to disk is sufficient to enable the database to
reconstruct the updates when the database system is restarted
after the failure.
► Ensuring durability is the responsibility of a component of the
database system called the recovery-management component.
► 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).
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.
But it is still possible that it may have to be aborted, since the actual output
may still be temporarily residing in main memory, and thus a hardware
failure may preclude its successful completion.
The database system then writes out enough information to disk that, even
in the event of a failure, the updates performed by the transaction can be
re-created when the system restarts after the failure. When the last of this
information is written out, the transaction enters the committed state.
Transaction State (Cont.)
Concurrent Executions
► 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.
Recoverability (Cont.)
► 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)
►
If T10 fails, T11 and T12 must also be rolled back.
► Can lead to the undoing of a significant amount of work
Recoverability (Cont.)
y
Example Schedule (Schedule A)
T1 T2 T3 T4 T5
read(X)
read(Y)
read(Z)
read(V)
read(W)
read(W)
read(Y)
write(Y)
write(Z)
read(U)
read(Y)
write(Y)
read(Z)
write(Z)
read(U)
write(U)
Precedence Graph for
Schedule A
T1 T2
T4
T3
Test for Conflict
Serializability
► A schedule is conflict serializable if and only if its
precedence graph is acyclic.
► 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, a serializability order for Schedule A would
be
T5 → T1 → T3 → T2 → T4 .
Test for View Serializability