Chapter 14: Transactions: Database System Concepts, 6 Ed
Chapter 14: Transactions: Database System Concepts, 6 Ed
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
4 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.)
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.
Database System Concepts - 6th Edition 14.7 ©Silberschatz, Korth and Sudarshan
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
4 can be done only if no internal logical error
● Kill the transaction
■ Committed – after successful completion.
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:
● Increased processor and disk utilization, leading to
better transaction throughput
4 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.
■ Concurrency control schemes – mechanisms to achieve
isolation
● That is, to control the interaction among the concurrent
transactions in order to prevent them from destroying the
consistency of the database
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
● A schedule for a set of transactions must consist of all
instructions of those transactions
● Must preserve the order in which the instructions appear in
each individual transaction.
■ A transaction that successfully completes its execution will have a
commit instructions as the last statement
● By default transaction assumed to execute commit instruction
as its last step
■ A transaction that fails to successfully complete its execution will
have an abort instruction as the last statement
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
Database System Concepts - 6th Edition 14.16 ©Silberschatz, Korth and Sudarshan
Simplified view of transactions
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
respectively. Instructions li and lj 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
■ Intuitively, a conflict between li and lj forces a (logical) temporal
order between them.
● If li and lj are consecutive in a schedule and they do not
conflict, their results would remain the same even if they had
been interchanged in the schedule.
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 3 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
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.
■ 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.
● That is, a linear order consistent with the
partial order of the graph.
● For example, a serializability order for the
schedule (a) would be one of either (b) or (c)
Database System Concepts - 6th Edition 14.23 ©Silberschatz, Korth and Sudarshan
Recoverable Schedules
■ 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.
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 (so the
schedule is recoverable)
Database System Concepts - 6th Edition 14.25 ©Silberschatz, Korth and Sudarshan
Cascadeless Schedules
Database System Concepts - 6th Edition 14.26 ©Silberschatz, Korth and Sudarshan
Concurrency Control
■ A database must provide a mechanism that will ensure that all
possible schedules are both:
● Conflict serializable.
● Recoverable and preferably cascadeless
■ A policy in which only one transaction can execute at a time
generates serial schedules, but provides a poor degree of
concurrency
■ Concurrency-control schemes tradeoff between the amount of
concurrency they allow and the amount of overhead that they incur
■ Testing a schedule for serializability after it has executed is a little
too late!
● Tests for serializability help us understand why a concurrency
control protocol is correct
■ Goal – to develop concurrency control protocols that will assure
serializability.
Database System Concepts - 6th Edition 14.27 ©Silberschatz, Korth and Sudarshan
Weak Levels of Consistency
Database System Concepts - 6th Edition 14.28 ©Silberschatz, Korth and Sudarshan
Levels of Consistency in SQL-92
■ Serializable — default
■ Repeatable read — only committed records to be read, repeated reads of
same record must return same value. However, a transaction may not be
serializable – it may find some records inserted by a transaction but not
find others.
■ Read committed — only committed records can be read, but successive
reads of record may return different (but committed) values.
■ Read uncommitted — even uncommitted records may be read.
Database System Concepts - 6th Edition 14.29 ©Silberschatz, Korth and Sudarshan
Transaction Definition in SQL
■ Data manipulation language must include a construct for
specifying the set of actions that comprise a transaction.
■ In SQL, a transaction begins implicitly.
■ A transaction in SQL ends by:
● Commit work commits current transaction and begins a
new one.
● Rollback work causes current transaction to abort.
■ In almost all database systems, by default, every SQL
statement also commits implicitly if it executes successfully
● Implicit commit can be turned off by a database directive
4 E.g. in JDBC, connection.setAutoCommit(false);
Database System Concepts - 6th Edition 14.30 ©Silberschatz, Korth and Sudarshan
The picture can't be displayed.
End of Chapter 14