Weeks 10 and 11 Transactions Management
Weeks 10 and 11 Transactions Management
▪ Transaction Concept
▪ Transaction State
▪ Concurrent Executions
▪ Serializability
▪ Recoverability
▪ Implementation of Isolation
▪ Transaction Definition in SQL
▪ Testing for Serializability.
Database System Concepts - 7th Edition 17.2 ©Silberschatz, Korth and Sudarshan
Introduction
▪ Quite often databases are dynamic in the sense that the data stored in them are
frequently being altered, either by addition, deletion or modification.
▪ Whenever any of these alterations happen, we say that a transaction has
occurred in the database.
▪ Transactions are inevitable and are important in the management of databases
especially in the preservation of the integrity and accuracy of the database.
▪ This module examines the concept of database transactions, the features of a
transaction and how a database management system handles transactions to
preserve database integrity and consistency.
Database System Concepts - 7th Edition 17.3 ©Silberschatz, Korth and Sudarshan
Transactions
▪ The term transaction refers to a collection of operations that form a single
logical unit of work. For instance, transfer of money from one account to another
is a transaction consisting of two updates, one to each account.
▪ It is important that either all actions of a transaction be executed completely, or,
incase of some failure, partial effects of a transaction be undone. This property is
called atomicity.
▪ Further, once a transaction is successfully executed, its effects must persist in the
database—a system failure should not result in the database forgetting about a
transaction that successfully completed. This property is called durability.
▪ In a database system where multiple transactions are executing concurrently, if
updates to shared data are not controlled there is potential for transactions to see
inconsistent intermediate states created by updates of other transactions. Such a
situation can result in erroneous updates to data stored in the database.
▪ Thus, database systems must provide mechanisms to isolate transactions from
the effects of other concurrently executing transactions. This property is called
isolation.
Database System Concepts - 7th Edition 17.4 ©Silberschatz, Korth and Sudarshan
Transaction Concept
Database System Concepts - 7th Edition 17.5 ©Silberschatz, Korth and Sudarshan
Transaction Example
▪ For the time being, we assume that the database permanently resides on disk, but
that some portion of it is temporarily residing in main memory.
▪ Transactions access data using two operations:
• read(X), which transfers the data item X from the database to a local buffer
belonging to the transaction that executed the read operation.
• write(X), which transfers the data item X from the local buffer of the
transaction that executed the write back to the database.
▪ In a real database system, the write operation does not necessarily result in the
immediate update of the data on the disk; the write operation may be temporarily
stored in memory and executed on the disk later.
Database System Concepts - 7th Edition 17.6 ©Silberschatz, Korth and Sudarshan
Example of Fund Transfer
Database System Concepts - 7th Edition 17.7 ©Silberschatz, Korth and Sudarshan
Example of Fund Transfer (Cont.)
Database System Concepts - 7th Edition 17.8 ©Silberschatz, Korth and Sudarshan
Example of Fund Transfer (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 - 7th Edition 17.9 ©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 - 7th Edition 17.10 ©Silberschatz, Korth and Sudarshan
ACID Properties cont.
Database System Concepts - 7th Edition 17.11 ©Silberschatz, Korth and Sudarshan
Transaction - Terminologies
Database System Concepts - 7th Edition 17.12 ©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
▪ Can be done only if no internal logical error
• Kill the transaction
▪ Committed – after successful completion.
Database System Concepts - 7th Edition 17.13 ©Silberschatz, Korth and Sudarshan
Transaction State cont
Database System Concepts - 7th Edition 17.14 ©Silberschatz, Korth and Sudarshan
Implementation of Atomicity and Durability
Database System Concepts - 7th Edition 17.15 ©Silberschatz, Korth and Sudarshan
Shadow-copy technique for atomicity and durability
A transaction that wants to update the
database first creates a complete copy
of the database.
All updates are done on the new
database copy, leaving the original
copy, the shadow copy, untouched.
If at any point the transaction has to be
aborted, the system merely deletes the
new copy. The old copy of the
database has not been affected.
If the transaction completes, it is
committed as follows:
First, the operating system is asked to
make sure that all pages of the new
copy of the database have been written
out to disk.
After the operating system has written
all the pages to disk, the database
system updates the pointer db-pointer
to point to the new copy of the
database; the new copy then becomes
the current copy of the database.
The old copy of the database is then
Database System Concepts - 7th Edition 17.16
deleted. ©Silberschatz, Korth and Sudarshan
Concurrent Executions
Database System Concepts - 7th Edition 17.17 ©Silberschatz, Korth and Sudarshan
Reasons for allowing concurrency
Database System Concepts - 7th Edition 17.18 ©Silberschatz, Korth and Sudarshan
Concurrent Executions cont.
Database System Concepts - 7th Edition 17.19 ©Silberschatz, Korth and Sudarshan
Schedules
Database System Concepts - 7th Edition 17.20 ©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.
▪ A serial schedule in which T1 is followed by T2 :
Database System Concepts - 7th Edition 17.21 ©Silberschatz, Korth and Sudarshan
Schedule 2
Database System Concepts - 7th Edition 17.22 ©Silberschatz, Korth and Sudarshan
Schedules 1 and 2
Database System Concepts - 7th Edition 17.23 ©Silberschatz, Korth and Sudarshan
▪ When the database system executes several transactions concurrently, the
corresponding schedule no longer needs to be serial.
▪ If two transactions are running concurrently, the operating system may execute
one transaction for a little while, then perform a context switch, execute the
second transaction for some time, and then switch back to the first transaction for
some time, and so on.
▪ With multiple transactions, the CPU time is shared among all the transactions.
▪ However, several execution sequences are possible, since the various instructions
from both transactions may now be interleaved.
▪ In general, it is not possible to predict exactly how many instructions of a
transaction will be executed before the CPU switches to another transaction.
Database System Concepts - 7th Edition 17.24 ©Silberschatz, Korth and Sudarshan
Schedule 3 – Concurrent Schedule
Database System Concepts - 7th Edition 17.25 ©Silberschatz, Korth and Sudarshan
Schedule 4
Database System Concepts - 7th Edition 17.26 ©Silberschatz, Korth and Sudarshan
SERIALIZABILITY
Database System Concepts - 7th Edition 17.27 ©Silberschatz, Korth and Sudarshan
Introduction
Database System Concepts - 7th Edition 17.28 ©Silberschatz, Korth and Sudarshan
Serializability
Database System Concepts - 7th Edition 17.29 ©Silberschatz, Korth and Sudarshan
Serializability
Database System Concepts - 7th Edition 17.30 ©Silberschatz, Korth and Sudarshan
Simplified view of transactions
Database System Concepts - 7th Edition 17.31 ©Silberschatz, Korth and Sudarshan
Conflict Serializability
• Consider a schedule, S with two consecutive instructions Ii and Ij in
transactions Ti and Tj respectively (i j). If Ii and Ij refer to different data items,
then we can swap Ii and Ij without affecting the results of any instructions in the
schedule. However, if Ii and Ij refer to the same data item Q, then the order of the
two steps may matter. For the moment, let’s deal with only Read and Write
instructions since they are the only significant operations of a transaction, from a
scheduling point of view
• Now, the four cases that may arise are:
i. Ii = read (Q), Ij = read (Q). The order of instructions Ii and Ij does not matter, since
the two instructions both read the same value of Q, from two different transactions
Ti and Ti.
ii. Ii = read (Q), Ij = write (Q). If Ii comes before Ij, then Ti does not read the value of Q
that is written by Tj in instruction Ij. If Ij comes before Ii then Ti read the value of Q
written by Tj. Thus the order Ii and Ij matters.
iii. Ii = write (Q), Ij = read (Q). For the same reason as in ii) above, the order of the two
transactions matter.
iv. Ii = write (Q), Ij = write (Q). Since they both are writing, the order of the two
transactions matter and the next read(Q) instruction will have the value of the last
write instruction.
Conflicting Instructions
Database System Concepts - 7th Edition 17.33 ©Silberschatz, Korth and Sudarshan
Conflict Serializability cont
Schedule 3
Database System Concepts - 7th Edition 17.34 ©Silberschatz, Korth and Sudarshan
Conflict Serializability
Database System Concepts - 7th Edition 17.35 ©Silberschatz, Korth and Sudarshan
Conflict Serializability (Cont.)
Schedule 3 Schedule 6
Note: It is however possible to have two schedules that produce the same
outcome, but that are not conflict equivalent.
Database System Concepts - 7th Edition 17.36 ©Silberschatz, Korth and Sudarshan
Conflict Serializability (Cont.)
Database System Concepts - 7th Edition 17.37 ©Silberschatz, Korth and Sudarshan
View Serializability
▪ It is a form of equivalence that is less stringent than conflict equivalence, but that,
like conflict equivalence, is based on only the read and write operations of
transactions.
▪ Consider two schedules S and S’, where the same set of transactions participates
in both schedules. The schedules S and S’ are said to be view equivalent if three
conditions are met:
1. For each data item Q, if transaction Ti reads the initial value of Q in
schedule S, then transaction Ti must, in schedule S’, also read the initial
value of Q.
2. For each data item Q, if transaction Ti executes read(Q) in schedule S, and
if that value was produced by a write(Q) operation executed by transaction
Tj , then the read(Q) operation of transaction Ti must, in schedule S’, also
read the value of Q that was produced by the same write(Q) operation of
transaction Tj.
3. For each data item Q, the transaction (if any) that performs the final
write(Q) operation in schedule S must perform the final write(Q) operation in
schedule S’.
Database System Concepts - 7th Edition 17.38 ©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,
1. If in schedule S, transaction Ti reads the initial value of Q, then in
schedule S’ also transaction Ti must read the initial value of Q.
2. If in schedule S transaction Ti executes read(Q), and that value was
produced by transaction Tj (if any), then in schedule S’ also
transaction Ti must read the value of Q that was produced by the
same write(Q) operation of transaction Tj .
3. 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.
▪ Conditions 1 and 2 above ensure that each transaction reads the same
values in both schedules and, therefore, performs the same computation.
▪ Condition 3, coupled with conditions 1 and 2, ensures that both schedules
result in the same final system state.
Database System Concepts - 7th Edition 17.39 ©Silberschatz, Korth and Sudarshan
View Serializability cont.
Database System Concepts - 7th Edition 17.40 ©Silberschatz, Korth and Sudarshan
View Serializability (Cont.)
▪ Every view serializable schedule that is not conflict serializable has blind
writes.
▪ Transactions that perform write operations without having performed a
read operation are called blind writes.
▪ Blind writes appear in any view-serializable schedule that is not conflict
serializable.
Database System Concepts - 7th Edition 17.41 ©Silberschatz, Korth and Sudarshan
RECOVERABILITY
Database System Concepts - 7th Edition 17.43 ©Silberschatz, Korth and Sudarshan
Recoverability
▪ So far, we have studied what schedules are acceptable from the viewpoint of
consistency of the database, assuming implicitly that there are no transaction
failures.
▪ We now address the effect of transaction failures during concurrent execution.
▪ If a transaction Ti fails, for whatever reason, we need to undo the effect of this
transaction to ensure the atomicity property of the transaction.
▪ In a system that allows concurrent execution, it is necessary also to ensure that
any transaction Tj that is dependent on Ti (that is, Tj has read data written by Ti )
is also aborted.
▪ To achieve this, we need to place restrictions on the type of schedules permitted
in the system. Therefore, we need to address the issue of what schedules are
acceptable from the viewpoint of recovery from transaction failure.
Database System Concepts - 7th Edition 17.44 ©Silberschatz, Korth and Sudarshan
Recoverable Schedules
▪ Now suppose that T8 fails before it commits. Since T9 has read the value of
data item A written by T8, we must abort T9 to ensure transaction atomicity.
▪ However, T9 has already committed and cannot be aborted. Thus, we have
a situation where it is impossible to recover correctly from the failure of T8.
▪ This is an example of a non-recoverable schedule, which should not be
allowed. Most database system require that all schedules be recoverable.
Database System Concepts - 7th Edition 17.45 ©Silberschatz, Korth and Sudarshan
Cascading Rollbacks
Database System Concepts - 7th Edition 17.46 ©Silberschatz, Korth and Sudarshan
Cascading Rollbacks
Database System Concepts - 7th Edition 17.47 ©Silberschatz, Korth and Sudarshan
Cascadeless Schedules
Database System Concepts - 7th Edition 17.48 ©Silberschatz, Korth and Sudarshan
Concurrency Control
▪ A database must provide a mechanism that will ensure that all possible
schedules are
• either conflict or view serializable, and
• are 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
• Are serial schedules recoverable/cascadeless?
▪ Testing a schedule for serializability after it has executed is a little too late!
▪ Goal – to develop concurrency control protocols that will assure
serializability.
Database System Concepts - 7th Edition 17.49 ©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.
• Successive reads of record may return different (but committed)
values.
▪ Read uncommitted — even uncommitted records may be read.
Database System Concepts - 7th Edition 17.52 ©Silberschatz, Korth and Sudarshan
Transaction Definition in SQL
Database System Concepts - 7th Edition 17.55 ©Silberschatz, Korth and Sudarshan
Transactions as SQL Statements
▪ E.g., Transaction 1:
select ID, name from instructor where salary > 90000
▪ E.g., Transaction 2:
insert into instructor values ('11111', 'James', 'Marketing', 100000)
▪ Suppose
• T1 starts, finds tuples salary > 90000 using index and locks them
• And then T2 executes.
• Do T1 and T2 conflict? Does tuple level locking detect the conflict?
• Instance of the phantom phenomenon
▪ Also consider T3 below, with Wu’s salary = 90000
update instructor
set salary = salary * 1.1
where name = 'Wu’
▪ Key idea: Detect “predicate” conflicts, and use some form of “predicate
locking”
Database System Concepts - 7th Edition 17.57 ©Silberschatz, Korth and Sudarshan
Example
▪ Begin transaction
▪ insert into orders values (“ÁCB234”, ’29-Jan-2022”, “S113”);
▪ insert into orders values (“ÁCB234”, ’28-Jan-2022”, “S176”);
▪ ….
▪ update stock;
▪ set stock_qty = stock_qty - 25
▪ where prdtcode = “S560”;
▪ update stock
▪ set stock_qty = stock_qty -25
▪ where prdtcode = “K552”
▪ ….
▪ Commit
▪ End transaction
Database System Concepts - 7th Edition 17.58 ©Silberschatz, Korth and Sudarshan
Further Reading
Chapter 17
Database System Concepts - 7th Edition 17.59 ©Silberschatz, Korth and Sudarshan