SlideShare a Scribd company logo
1 of 202
TOPIC:-Characterizing
Schedules Based on
Recoverability and
Serializability.
SCHEDULE
▶ A schedule (or history ) S of n transactions T1 , T2 , …, Tn
is an ordering of the operations of the transactions, such
that operations of Ti in S must appear in the same order in
which they occur in Ti .
▶ For example, the schedule of T1 and T2 is
▶ S : r1(X); r2(X); w1(X); r1(Y); w2(X); w1(Y);
▶ Two operations in a schedule are conflict if:
 They belong to different transactions,
 They access the same item X, and
 At least one of them is a WRITE_ITEM(X) operation.
▶ A schedule S of n transactions T 1 , T 2 , …, T n is said to be a
complete schedule if:
 The operations in S are exactly those operations in T 1 , T 2 , …, T n
including a commit or abort operation as the last operation for each
transaction.
 The order of operations in S is the same as their occurrence in T i .
 For any two conflict operations, one of the two must occur before the
other in the schedule.
Characterizing Schedules Based
on Recoverability.
▶ We would like that, once a transaction T is committed, it
should never be necessary to roll back T. The schedules
that meet this criterion are called recoverable schedules .
Therefore:
 A schedule S is recoverable if no transaction T in S commits until
all transactions T’ that have written an item that T reads have
committed. For example
 S’ a : r 1 (X); r 2 (X); w 1 (X); r 1 (Y); w 2 (X); c 2 ; w 1 (Y); c 1 ;
 is recoverable, even though it suffers from the lost update
problem.
▶ Example -- Consider the following schedules:
 Sc : r1(X); w1(X); r2(X);r1(Y); w2(X); c2; a1 ;
 Sd : r1(X);w1(X); r2(X);r1(Y); w2(X); w1(Y); c1; c2 ;
 Se : r1(X); w1(X); r2(X);r1(Y); w2(X); w1(Y); a1 ; a2 ;
 Sc is not recoverable , because T2 reads item X written by T1 , and then T2
commits before T1 commits.
 Sd is recoverable , because T2 reads item X written by T1 , and then T2
commits after T1 commits and no other conflict operations exists in the
schedule.
 Se is similar to Sd , but T 1 is aborted (instead of commit).
 In this situation T2 should also abort, because the value of X it read is no longer
valid (this phenomenon known as cascading rollback or cascading abort ).
▶Because cascading rollback can be quite time-consuming, we
perform cascade less schedules.
▶A schedule is said to be cascade less or to avoid cascading
rollback if every transaction in the schedule reads only
items that were written by committed transactions.
▶A more restrictive type of schedule is called strict
schedule, in which transactions can neither read nor write
an item X until the last transaction that wrote X has
committed (or aborted)
Characterizing Schedules Based
on Serializability
▶ If no interleaving of operations is permitted, there are
only two possible arrangements for executing transactions
T1 and T2 :
▶Execute (in sequence) all the operations of transaction T1, followed
by all the operations of transaction T2.
▶Execute (in sequence) all the operations of transaction T2,
followed by all the operations of transaction T1.
▶ If interleaving of operations is allowed there will be many
possible schedules.
▶ The concept of serializability of schedules is used to
identify which schedules are correct.
▶ Examples of serial and non-serial schedules involving transactions T 1
and T 2 .
 Serial schedule A: T1 followed by T2 .
 Serial schedules B: T2 followed by T1 .
(c) Two Non-serial schedules C and D with interleaving of
operations.
▶A schedule S is serial , if for every transaction T
participating in the schedule, all the operations of T are
executed consecutively in the schedule; otherwise the
schedule is called non-serial.
▶The drawback of serial schedules is that they limit
concurrency of interleaving of operations.
▶Two schedules are called result equivalent if they produce
the same final state of the database.
▶Example: Two schedules that are result equivalent for the
initial value of X = 100, but are not result equivalent in
general.
▶Two schedules are called Conflict equivalent if the order
of any two conflicting operations is the same in both
schedules.
▶A schedule S of n transactions is Serializable if it is
equivalent to some serial schedule of the same n
transactions.
▶A schedule S to be conflict serializable if it is conflict
equivalent to some serial schedule S’.
▶ Algorithm for testing conflict serializability of S:
 For each transaction Ti in schedule S, create a node,
 If Tj executes a READ_ITEM(X) after Ti executes a WRITE_ITEM(X), create
an edge Ti->Tj
 If Tj executes a WRITE_ITEM(X) after Ti executes a READ_ITEM(X), create
an edge Ti->Tj
 If Tj executes a WRITE_ITEM(X) after Ti executes a WRITE_ITEM(X),
create an edge Ti->Tj
 The schedule S is serializable if and only if the precedence graph has no cycle.
TOPIC:- LOCK BASED
PROTOCOLS
LOCK BASED PROTOCOLS
▶ A lock is a mechanism to control concurrent access to a
data item Data items can be locked in two modes :
1. exclusive (X) mode. Data item can be both read as well
as written. X-lock is requested using lock-X
instruction.
2. shared (S) mode. Data item can only be read. S-lock
is requested using lock-S instruction.
▶ Lock requests are made to concurrency-control
manager. Transaction can proceed only after request
is granted.
Lock-Based Protocols (Cont.)
▶ A transaction may be granted a lock on an item if the requested lock is
compatible with locks already held on the item by other transactions
▶ Any number of transactions can hold shared locks on an item, but if
any transaction holds an exclusive on the item no other transaction may
hold any lock on the item.
▶ If a lock cannot be granted, the requesting transaction is made to wait
till all incompatible locks held by other transactions have been released. The
lock is then granted.
Lock-compatibility matrix
Pitfal s of Lock-Based Protocols
▶ Consider the partial schedule
Neither T3 nor T4 can make progress — executing lock-S(B) causes T4 to
wait for T3 to release its lock on B, while executing lock-X(A) causes T3
to wait for T4 to release its lock on A.
Such a situation is called a deadlock.
 To handle a deadlock one of T3 or T4 must be rolled back
and its locks released.
Pitfalls of Lock-Based Protocols (Cont.)
▶ The potential for deadlock exists in most locking
protocols. Deadlocks are a necessary evil.
▶ Starvation is also possible if concurrency control
manager is badly designed. For example:
🢐 A transaction may be waiting for an X-lock on an item,
while a sequence of other transactions request and are
granted an S-lock on the same item.
🢐 The same transaction is repeatedly rolled back due to
deadlocks.
▶ Concurrency control manager can be designed to
prevent starvation
The Two-Phase Locking Protocol
▶ This is a protocol which ensures conflict-serializable schedules. Phase
1: Growing Phase
🢐 transaction may obtain locks
🢐 transaction may not release locks
▶ Phase 2: Shrinking Phase
🢐 transaction may release locks
🢐 transaction may not obtain locks
▶ The protocol assures serializability. It can be proved that the
transactions can be serialized in the order of their lock points (i.e. the
point where a transaction acquired its final lock).
The Two-Phase Locking Protocol
(Cont.)
▶ Two-phase locking does not ensure freedom from deadlocks
▶ Cascading roll-back is possible under two-phase locking. To
avoid this, follow a modified protocol called strict two-phase
locking. Here a transaction must hold all its exclusive locks till it
commits/aborts.
▶ Rigorous two-phase locking is even stricter: here all locks
are held till commit/abort. In this protocol transactions can be
serialized in the order in which they commit.
The Two-Phase Locking
Protocol (Cont.)
▶There can be conflict serializable schedules that
cannot be obtained if two-phase locking is used.
▶However, in the absence of extra information (e.g.,
ordering of access to data), two-phase locking is
needed for conflict serializability in the following
sense:
▶Given a transaction Ti that does not follow two-phase
locking, we can find a transaction Tj that uses two-
phase locking, and a schedule for Ti and Tj that is not
conflict serializable.
Lock Conversions
▶ Two-phase locking with lock conversions:
 First Phase:
 can acquire a lock-S on item
 can acquire a lock-X on item
 can convert a lock-S to a lock-X (upgrade)
 Second Phase:
 can release a lock-S
 can release a lock-X
 can convert a lock-X to a lock-S (downgrade)
▶ This protocol assures serializability. But still relies on the programmer to insert
the various locking instructions.
Implementation of Locking
▶ A Lock manager can be implemented as a separate process to
which transactions send lock and unlock requests
▶ The lock manager replies to a lock request by sending a lock
grant messages (or a message asking the transaction to roll
back, in case of a deadlock)
▶ The requesting transaction waits until its request is answered
▶ The lock manager maintains a data structure called a lock table
to record granted locks and pending requests
▶ The lock table is usually implemented as an in-memory hash
table indexed on the name of the data item being locked
TOPIC:- TIME STAMP-BASED
PROTOCOLS
Timestamp-Based Protocols
▶ Each transaction is issued a timestamp when it enters the
system. If an old transaction Ti has time-stamp TS(Ti), a
new transaction Tj is assigned time-stamp TS(Tj) such
that TS(Ti) <TS(Tj).
▶ The protocol manages concurrent execution such that the
time-stamps determine the serializability order.
Timestamp-Based Protocols
▶ In order to assure such behavior, the protocol
maintains for each data Q two timestamp values:
 W-timestamp(Q) is the largest time-stamp of any
transaction that executed write(Q) successfully.
 R-timestamp(Q) is the largest time-stamp of any
transaction that executed read(Q) successfully.
Timestamp-Based Protocols
▶ The timestamp ordering protocol ensures that any
conflicting read and write operations are executed in
timestamp order.
▶ Suppose a transaction Ti issues a read(Q)
1. If TS(Ti) <_W-timestamp(Q), then Ti needs to read a
value of Q that was already overwritten. Hence, the read
operation is rejected, and Ti is rolled back.
2. If TS(Ti) >_W-timestamp(Q), then the read operation is
executed, and R-timestamp(Q) is set to the maximum of
R- timestamp(Q) and TS(Ti).
Timestamp-Based Protocols
Suppose that transaction Ti issues write(Q).
1. If TS(Ti) < R-timestamp(Q), then the value of Q that Ti
is producing was needed previously, and the system
assumed that that value would never be produced. Hence,
the write operation is rejected, and Ti is rolled back.
2. If TS(Ti) < W-timestamp(Q), then Ti is attempting to
write an obsolete value of Q. Hence, this write operation
is rejected, and Ti is rolled back.
3. Otherwise, the write operation is executed, and W-
timestamp(Q) is set to TS(Ti).
Timestamp-Based Protocols
▶ The timestamp-ordering protocol guarantees serializability since all
the arcs in the precedence graph are of the form:
▶ Thus, there will be no cycles in the precedence graph
▶ Timestamp protocol ensures freedom from deadlock as no transaction
ever waits.
▶ But the schedule may not be cascade-free, and may not even be
recoverable
Timestamp-Based Protocols
▶ Problem with timestamp-ordering protocol:
▶ Suppose Ti aborts, but Tj has read a data item written by
Ti
▶ Then Tj must abort; if Tj had been allowed to commit
earlier, the schedule is not recoverable .
▶ Further, any transaction that has read a data item written
by Tj must abort
▶ This can lead to cascading rollback --- that is, a chain of
rollbacks
Timestamp-Based Protocols
Solution:
▶ A transaction is structured such that its writes are all
performed at the end of its processing
▶ All writes of a transaction form an atomic action; no
transaction may execute while a transaction is being
written.
▶ A transaction that aborts is restarted with a new
timestamp.
Validation Based Protocol
33
34
Definition:-In optimistic concurrency control techniques, also known as
validation or certification techniques, no checking is done while the
transaction is executing.
Also based on Timestamp Protocol. It has three phases:
• Read Phase:- During this phase, the system executes transaction Ti. . It
reads the values of the various data items and stores them in variable
local to Ti. It performs all the write operations on temporary local
variables without update of the actual database.
35
•Validation Phase:- Transaction Ti performs a validation test to determine
whether it can copy to database the temporary local variables that hold
the result of write operations without causing a violation of serializability.
• Write Phase:- If Transaction Ti succeeds in validation, then the system
applies the actual updates to the database, otherwise the system rolls
back Ti.
36
To perform the validation test, we need to know when the various phases
of transaction Ti took place. We shall therefore associate three different
timestamps with transaction Ti.
1. Start (Ti): the time when Ti, started its execution.
2. Validation (Ti): the time when Ti finished its read phase and
started its validation phase.
3. Finish (Ti): the time when Ti finished its write phase.
37
The Validation Test for Tj requires that, for all transaction Ti with TS(Ti ) <
TS(Tj ) one of the following condition must hold:-
• Finish (Ti) < Start (Tj): Since Ti completes its execution before
Tj started, the serializability order is indeed maintained.
• Start(Tj )<Finish(Ti ) <validation(Tj ): The validation
phase of Tj should occur after Tifinishes.
38
Multiple Granularity
• Multiple granularity locking (MGL) is a locking method used in
database management systems (DBMS) and relational
databases. In MGL, locks are set on objects that contain
other objects. ...
For example, a database may have files, which contain pages,
which further contain records.
39
• Allow data items to be of various sizes and define a hierarchy of
data granularities, where the small
granularities are nested within larger ones
• Can be represented graphically as a tree (but don't confuse
with tree-locking protocol)
• When a transaction locks a node in the tree explicitly, it
implicitly locks all the node's descendents in the same
mode.
Granularity of locking (level in tree where locking is done):
fine granularity (lower in tree): high concurrency, high locking overhead
coarse granularity (higher in tree): low locking overhead, low
concurrency
40
Example of Granularity Hierarchy
41
42
The highest level in the above example hierarchy is the entire database.
The levels below are of type area, file and record in that order.
• Intention Lock Modes:-In addition to S and X lock modes, there are
three additional lock modes with multiple granularity:
 intention-shared (IS): indicates explicit locking at a lower level of the tree but only with shared locks.
 intention-exclusive (IX): indicates explicit locking at a lower level with exclusive or
shared locks
 shared and intention-exclusive (SIX): the subtree rooted by that node is locked explicitly in shared mode and
explicit locking is being done at a lower level with exclusive-mode locks.
• intention locks allow a higher level node to be locked in S or X
mode without having to check all descendent nodes.
THE END.
Data Management for Data Science
Database Management Systems:
transaction management
and recovery management
Maurizio Lenzerini, Riccardo Rosati
Dipartimento di Ingegneria informatica automatica e gestionale
Università di Roma “La Sapienza”
2015/2016
SQL engine
Access file manager
Buffer manager
Security and
recovery
manager
Disk manager
Data
SQL commands
DBMS
Transaction
manager
DBMS transactions and recovery 45
Architecture of a DBMS
1 - Transaction management
DBMS transactions and recovery 46
1. Transactions, concurrency, serializability
2. Recoverability
3. Concurrency control through locks
4. Concurrency control through timestamps
5. Transaction management in SQL
1 - Transaction management
DBMS transactions and recovery 47
1. Transactions, concurrency, serializability
2. Recoverability
3. Concurrency control through locks
4. Concurrency control through timestamps
5. Transaction management in SQL
Transactions
DBMS transactions and recovery 48
A transaction models the execution of a software procedure constituted by a
set of instructions that may ”read from” and “write on” a database, and that
form a single logical unit.
Syntactically, we will assume that every transaction contains:
– one “begin” instruction
– one “end” instruction
– one among “commit” (confirm what you have done on the database so far)
and “rollback” (undo what you have done on the database so far)
As we will see, each transaction should enjoy a set of properties (called ACID)
Example of “real” transaction
DBMS transactions and recovery 49
begin
writeln(’Inserire importo, conto di partenza, conto di arrivo’); read
(Importo, contoPartenza, contoArrivo);
EXEC SQL
select Saldo into :saldoCorrente from
ContiCorrenti
where Numero = :contoPartenza if
saldoCorrente < Importo
then begin
writeln(’Saldo Insufficiente’);
ABORT;
end;
else begin EXEC
SQL
UPDATE ContiCorrenti
set Saldo=:saldoCorrente - :Importo where
Numero = :contoPartenza;
writeln(‘Operazione eseguita con successo’);
COMMIT;
end; end;
Numero Saldo
Tabella ContiCorrenti
Effect of a transaction
DBMS transactions and recovery 50
Let DB be a database
Let T be a transaction on DB
Effect (or result) of T = state of DB after the execution of T
As we shall see, every transaction must enjoy a set of properties (called ACID
properties) that deal with the effect of the transaction
Concurrency
DBMS transactions and recovery 51
The throughput of a system is the number of transactions per second (tps)
accepted by the system
In a DBMS, we want the throughput to be approximately 100-1000tps
This means that the system should support a high degree of
concurrency among the transactions that are executed
– Example: If each transaction needs 0.1 seconds in the average for its
execution, then to get a throughput of 100tps, we must ensure that 10
transactions are executed concurrently in the average
Typical applications: banks, flight reservations, …
Concurrency: example
Suppose that the same program is executed concurrently by two
applications aiming at reserving a seat in the same flight
The result is that we have two reservations for the same seat!
1. Find seat
2.
3. Book seat
4.
The following temporal evolution is possible:
Application 1 Application 2
Find seat
Book seat
time
DBMS transactions and recovery 52
Isolation of transactions
DBMS transactions and recovery 53
The DBMS deals with this problem by ensuring the so-called
“isolation” property for the transactions
This property for a transaction essentially means that it is executed
like it was the only one in the system, i.e., without concurrent
transactions
While isolation is essential, other properties are important as well
Desirable properties of transactions
DBMS transactions and recovery 54
The desirable properties in transaction management are called the ACID
properties. They are:
1. Atomicity: for each transaction execution, either all or none of its
actions are executed
2. Consistency: each transaction execution brings the database
to a correct state
3. Isolation: each transaction execution is independent of any other
concurrent transaction executions
4. Durability: if a transaction execution succeeds, then its effects
are registered permanently in the database
Schedules and serial schedules
DBMS transactions and recovery 55
Given a set of transactions T1,T2,…,Tn, a sequence S of executions of actions of
such transactions respecting the order within each transaction (i.e., such that if
action a is before action b in Ti, then a is before b also in S) is called schedule
on T1,T2,…,Tn, or simply schedule.
A schedule on T1,T2,…,Tn that does not contain all the actions of all
transactions T1,T2,…,Tn is called partial
A schedule S is called serial if the actions of each transaction in S come
before every action of a different transaction in S, i.e., if in S the actions of
different transactions do not interleave.
Serializability
DBMS transactions and recovery 56
Example of serial schedules:
Given T1 (x=x+x; x= x+2) and T2 (x= x**2; x=x+2), possible serial
schedules on them are:
Sequence 1:
Sequence 2:
x=x+x; x= x+2; x= x**2; x=x+2 x=
x**2; x=x+2; x=x+x; x= x+2
Definition of serializable schedule: A schedule S is serializable if the
outcome of its execution is the same as the outcome of at least one serial
schedule constituted by the same transactions of S, no matter what the
initial state of the database is.
Serializability
DBMS transactions and recovery 57
In other words, a schedule S on T1,T2,…,Tn is serializable if there
exists a serial schedule on T1,T2,…,Tn that is “equivalent” to S
But what does “equivalent” mean?
Definition of equivalent schedules: Two schedules S1 and S2 are
said to be equivalent if, for each database state D, the execution of
S1 starting in the database state D produces the same outcome as
the execution of S2 starting in the same database state D
Notation
A successful execution of transaction can be represented as a sequence of
– Comands of type begin/commit
– Actions that read and write an element (attribute, record, table) in the database
– Actions that read and write an element in the local store
T1
begin
READ(A,t)
t := t+l00
WRITE(A,t)
READ(B,t)
t := t+l00
WRITE(B,t)
commit
T2
begin
READ(A,s)
s := s*2
WRITE(A,s)
READ(B,s)
s := s*2
WRITE(B,s)
commit
DBMS transactions and recovery 58
A serial schedule
T1
begin
READ(A,t)
t := t+l00
WRITE(A,t)
READ(B,t)
t := t+l00
WRITE(B,t)
commit
T2
begin
READ(A,s)
s := s*2
WRITE(A,s)
READ(B,s)
s := s*2
WRITE(B,s)
commit
A
25
B
25
125
125
250
250
DBMS transactions and recovery 59
A serializable schedule
T1
begin
READ(A,t)
t := t+l00
WRITE(A,t)
READ(B,t)
t := t+l00
WRITE(B,t)
commit
T2
begin
READ(A,s)
s := s*2
WRITE(A,s)
READ(B,s)
s := s*2
WRITE(B,s)
commit
A
25
B
25
125
250
125
250
The final values of A
and B are the same as
the serial
schedule T1, T2, no
matter what the
initial values of A and
B.
We can indeed show
that, if initially
A=B=c (c is a
costant), then at the
end of the execution
of the schedule we
have: A=B=2(c+100)
DBMS transactions and recovery 60
A non-serializable schedule
T1
begin
READ(A,t)
t := t+l00
WRITE(A,t)
READ(B,t)
t := t+l00
WRITE(B,t)
commit
T2
begin
READ(A,s)
s := s*2
WRITE(A,s)
READ(B,s)
s := s*2
WRITE(B,s)
commit
A
25
B
25
125
250
50
150
Where is
the
problem??
DBMS transactions and recovery 61
A non-serializable schedule
T1
begin
READ(A,t)
t := t+l00
WRITE(A,t)
READ(B,t)
t := t+l00
WRITE(B,t)
commit
T2
begin
READ(A,s)
s := s*2
WRITE(A,s)
READ(B,s)
s := s*2
WRITE(B,s)
A
25
B
25
125
250
50
150
Where is
the
problem??
DBMS transactions and recovery 62
commit
Anomaly 1: reading temporary data (WR anomaly)
begin
READ(A,x)
x := x-1
WRITE(A,x)
READ(B,x)
x:=x+1
WRITE(A,x)
commit
T1 T2
begin
READ(A,x)
x := x*2
WRITE(A,x)
READ(B,x)
x := x*2
WRITE(B,x)
commit
Note that the interleaved
execution is different from any
serial execution. The problem
comes from the fact that the value of
A written by T1 is read by T2 before
T1 has completed all its changes.
This is a WR (write-read)
anomaly
DBMS transactions and recovery 63
Anomaly 2a: update loss (RW anomaly)
begin
READ(A,x)
x := x+1
WRITE(A,x)
commit
• Let T1, T2 be two transactions, each of the form:
READ(A, x), x := x + 1, WRITE(A, x)
• The serial execution with initial value A=2 produces A=4, which is
the result of two subsequent updates
• Now, consider the following schedule:
T1 T2
begin
READ(A,x)
x := x+1
WRITE(A,x)
commit
The final result is A=3, and the first
update is lost: T2 reads the initial
value of A, and writes the final
value. In this case, the update
executed by T1 is lost!
DBMS transactions and recovery 64
Anomaly 2a: update loss (RW anomaly)
DBMS transactions and recovery 65
• This kind of anomaly is called RW anomaly (read-write anomaly),
because it shows up when a transaction reads an element, and another
transaction writes the same element.
• Indeed, this anomaly comes from the fact that a transaction T2 could change
the value of an object A that has been read by a transaction T1, while T1 is
still in progress. The fact that T1 is still is progress means that the risk is that
T1 works on A without taking into account the changes that T2 makes on
A. Therefore, the update of T1 or T2 are lost.
Anomaly 2b: unrepeateable read (RW anomaly)
T1 executes two consecutive reads of the same data:
T1
begin
READ(A,x)
READ(A,x)
However, dc
u
oe
mt
m
oit
the concurrent update of T2, T1 reads two different values.
This is another kind of RW (read-write) anomaly.
T2
begin
READ(A,x)
x := x+1
WRITE(A,x)
commit
DBMS transactions and recovery 66
Anomaly 3: ghost update (WW anomaly)
Assume the following integrity constraint A = B
begin
WRITE(A,1)
WRITE(B,1)
commit
T1 T2
begin
WRITE(B,2)
WRITE(A,2)
commit
Note that T1 and T2 in isolation do
not violate the integrity
constraints. However, the
interleaved execution is different
from any serial execution.
Transaction T1 will see the update
of A to 2 as a surprise, and
transaction T2 will see the update
of B to 1 as a surprise.
This is a WW (write-write)
anomaly
DBMS transactions and recovery 67
Scheduler
The scheduler is part of the transaction manager, and works as follows:
– It deals with new transactions entered into the system, assigning them an identifier
– It instructs the buffer manager so as to read and write on the DB according to a
particular sequence
– It is NOT concerned with specific operations on the local store of transactions, nor with
constraints on the order of executions of transactions. The last conditions means that
every order by which transactions are entered into the system is acceptable to the
schedule.
It follows that we can simply characterize each transaction Ti (where i is a nonnegative integer
identifying the transaction) in terms of its actions, where each action of
transaction Ti is denoted by a letter (read, write, o commit) and the subscript i The
transactions of the previous examples are written as:
T1: r1(A) r1(B) w1(A) w1(B) c1 T2: r2(A) r2(B) w2(A) w2(B) c2
An example of (complete) schedule on these transactions is:
r1(A) r1(B) w1(A) r2(A) r2(B) w2(A) w1(B) c1 w2(B) c2
T1 reads A T2 writes A T1 commit
DBMS transactions and recovery 68
Serializability and equivalence of schedules
DBMS transactions and recovery 69
As we saw before, the definition of serializability relies on the notion of
equivalence between schedules.
Depending on the level of abstraction used to characterize the effects of
transactions, we get different notions of equivalence, which in turn suggest
different definitions of serializability.
Given a certain definition of equivalence, we will be interested in
• two types of algorithms:
– algorithms for checking equivalence: given two schedule, determine if they are
equivalent
– algorithms for checking serializability: given one schedule, check whether it is
equivalent to any of the serial schedules on the same transactions
• rules that ensures serializability
Two important assumptions
DBMS transactions and recovery 70
1. No transaction reads or writes the same element twice
2. No transaction executes the “rollback” command (i.,e. all
executions of transactions are successful)
Classes of schedules
Basic idea of our investigation: single out classes of schedules that are
serializable, and such that the serializability check can be done with
reasonable computational complexity
Serial
schedules
All
schedules
Serializable
schedules
DBMS transactions and recovery 71
Conflict-serializability: the notion of conflict
DBMS transactions and recovery 72
Definition of conflicting actions: Two actions are conflicting in a schedule if they belong to
different transactions, they operate on the same element, and at least one of them is a write.
It is easy to see that:
– Two consecutive nonconflicting actions belonging to different transactions can be swapped
without changing the effects of the schedule. Indeed,
• Two consecutive reads of the same elements in different transactions can be swapped
• One read of X in T1 and a consecutive read of Y in T2 (with YX) can be swapped
– The swap of two consecutive actions of the same transaction can change the effect of the
transaction
– Two conflicting consecutive actions cannot be swapped without changing the effects of
the schedule, because:
• Swapping two write operations w1(A) w2(A) on the same elements may result in a
different final value for A
• Swapping two consecutive operations such as r1(A) w2(A) may cause T1 read
different values of A (before and after the write of T2, respectively)
Conflict-equivalence
DBMS transactions and recovery 73
Definition of conflict-equivalence: Two schedules S1 and S2 on the same transactions are
conflict-equivalent if S1 can be transformed into S2 through a sequence of swaps of
consecutive non-conflicting actions
Example:
S = r1(A) w1(A) r2(A) w2(A) r1(B) w1(B) r2(B) w2(B)
is conflict-equivalent to:
S’ = r1(A) w1(A) r1(B) w1(B) r2(A) w2(A) r2(B) w2(B)
because it can be transformed into S’ through the following sequence of swaps:
r1(A) w1(A) r2(A) w2(A) r1(B) w1(B) r2(B) w2(B)
r1(A) w1(A) r2(A) r1(B) w2(A) w1(B) r2(B) w2(B)
r1(A) w1(A) r1(B) r2(A) w2(A) w1(B) r2(B) w2(B)
r1(A) w1(A) r1(B) r2(A) w1(B) w2(A) r2(B) w2(B)
r1(A) w1(A) r1(B) w1(B) r2(A) w2(A) r2(B) w2(B)
Exercise
DBMS transactions and recovery 74
Prove the following property:
Two schedules S1 and S2 on the same transactions T1,…,Tn are conflict-
equivalent if and only if there are no actions ai of Ti and bj of Tj (with Ti
and Tj belonging to T1,…Tn) such that
- ai and bj are conflicting, and
- the mutual position of the two actions in S1 is different from
their mutual position in S2
Conflict-serializability
DBMS transactions and recovery 75
Definition of conflict-serializability: A schedule S is conflict-
serializable if there exists a serial schedule S’ that is conflict-
equivalent to S
How can conflict-serializability be checked?
We can do it by analyzing the precedence graph associated to a
schedule. Given a schedule S on T1,…,Tn, the precedence graph P(S)
associated to S is defined as follows:
– the nodes of P(S) are the transactions {T1,…, Tn} of S
– the edges E of P(S) are as follows: the edge Ti  Tj is in E if and only if there
exists two actions Pi(A), Qj(A) of different transactions Ti and Tj in S operating
on the same object A such that:
(i.e., Pi(A) appears before Qj(A) in S)
– Pi(A) <S Qj(A)
– at least one between Pi(A) and Qj(A) is a write operation
Example of precedence graph
S: w3(A) w2(C) r1(A) w1(B) r1(C) w2(A) r4(A) w4(D)
3 1
2 4
DBMS transactions and recovery 76
How the precedence graph is used
DBMS transactions and recovery 77
Theorem (conflict-serializability) A schedule S is conflict-
serializable if and only if the precedence graph P(S) associated to
S is acyclic.
Exercise: Prove that, if S is a serial schedule, then the
precedence graph P(S) is acyclic.
1 - Transaction management
DBMS transactions and recovery 78
1. Transactions, concurrency, serializability
2. Recoverability
3. Concurrency control through locks
4. Concurrency control through timestamps
5. Transaction management in SQL
The rollback problem
DBMS transactions and recovery 79
We now consider the problem of rollback.
The first observation is that, with rollbacks, the notion of
serializability that we have considered up to now is not
sufficient for achieving the ACID properties.
This fact is testified by the existence of a new anomaly, called
“dirty read”.
A new anomaly: dirty read (WR anomaly)
DBMS transactions and recovery 80
Consider two transactions T1 and T2, both with the commands:
READ(A,x), x:=x+1, WRITE(A,x)
Now consider the following schedule (where T1 executes the rollback):
T1
begin
READ(A,x)
x := x+1
WRITE(A,x)
rollback
T2
begin
READ(A,x)
x := x+1
WRITE(A,x)
commit
The problem is that T2 reads a
value written by T1 before T1
commits or rollbacks.
Therefore, T2 reads a “dirty”
value, that is shown to be incorrect
when the rollback of T1 is executed.
The behavior of T2 depends on an
incorrect input value.
This is another form of WR (write-
read) anomaly.
Commit o rollback?
DBMS transactions and recovery 81
Recall that, at the end of transaction Ti:
• If Ti has executed the commit operation:
– the system should ensure that the effects of the transactions are
recorded permanently in the database
• If Ti has executed the rollback operation:
– the system should ensure that the transaction has no effect on the
database
Cascading rollback
DBMS transactions and recovery 82
Note that the rollback of a transaction Ti can trigger the rollback of other
transactions, in a cascading mode. In particular:
– If a transaction Tj different from Ti has read from Ti, we should kill Tj (or, Tj
should rollback)
– If another transaction Th has read from Tj, Th should in turn rollback
– and so on…
This is called cascading rollback, and the task of the system is to avoid it.
Recoverable schedules
DBMS transactions and recovery 83
If in a schedule S, a transaction Ti that has read from Tj commits before Tj, the risk
is that Tj then rollbacks, so that Ti leaves an effect on the database that depends
on an operation (of Tj) that never existed. To capture this concept, we say that Ti
is not recoverable.
A schedule S is recoverable if no transaction in S commits before all other
transactions it has “read from”, commit.
Example of recoverable schedule:
S: w1(A) w1(B) w2(A) r2(B) c1 c2
Example of non-recoverable schedule:
S: w1(A) w1(B) w2(A) r2(B) r3(A) c1 c3 c2
Serializability and recoverability
Serializability and recoverability are two orthogonal concepts: there are recoverable schedules
that are non-serializable, and serializable schedule that are not recoverable. Obviously, every
serial schedule is recoverable.
For example, the schedule
S1: w2(A) w1(B) w1(A) r2(B) c1 c2
is recoverable, but not serializable (it is not conflict-serializable), whereas the schedule
S2: w1(A) w1(B) w2(A) r2(B) c2 c1
is serializable (in particular, conflict-serializable), but not recoverable
serializable
schedule
recoverable
schedule
serial
schedule
DBMS transactions and recovery 84
Recoverability and cascading rollback
DBMS transactions and recovery 85
Recoverable schedules can still suffer from the cascading rollback problem.
For example, in this recoverable schedule
S: w2(A) w1(B) w1(A) r2(B)
if T1 rollbacks, T2 must be killed.
To avoid cascading rollback, we need a stronger condition wrt recoverability: a schedule S
avoids cascading rollback (i.e., the schedule is ACR, Avoid Cascading Rollback) if every
transaction in S reads values that are written by transactions that have already committed.
For example, this schedule is ACR
S: w2(A) w1(B) w1(A) c1 r2(B) c2
In other words, an ACR schedule blocks the dirty data anomaly.
Summing up
DBMS transactions and recovery 86
• S is recoverable if no transaction in S commits before the commit
of all the transactions it has “read from” Example:
w1(A) w1(B) w2(A) r2(B) c1 c2
• S is ACR, i.e., avoids cascading rollback, if no transaction “reads
from” a transaction that has not committed yet Example:
w1(A) w1(B) w2(A) c1 r2(B) c2
Recoverability and ACR
recoverable
schedule
DBMS transactions and recovery 87
serial
schedule
ACR
schedule
serializable
schedule
Analogously to recoverable schedules, not all ACR schedules are
serializable. Obviously, every ACR schedule is recoverable, and every
serial schedule is ACR.
Strict schedules
DBMS transactions and recovery 88
• We say that, in a schedule S, a transaction Ti writes on Tj if there is a wj(A) in
S followed by wi(A), and there is no write action on A in S between these two
actions
• We say that a schedule S is strict if every transaction reads only values
written by transactions that have already committed, and writes only on
transactions that have already committed
• It is easy to verify that every strict schedule is ACR, and therefore
recoverable
• Note that, for a strict schedule, when a transaction Ti rollbacks, it is
immediate to determine which are the values that have to be stored back in
the database to reflect the rollback of Ti, because no transaction may have
written on this values after Ti
Strict schedules and ACR
recoverable schedule
serializable
schedule
Obviously, every serial schedule is strict, and every strict schedule is
ACR, and therefore recoverable. However, not all ACR schedules are
strict.
ACR schedule
serial
schedule
strict schedule
DBMS transactions and recovery 89
1 - Transaction management
DBMS transactions and recovery 90
1. Transactions, concurrency, serializability
2. Recoverability
3. Concurrency control through locks
4. Concurrency control through timestamps
5. Transaction management in SQL
Concurrency control through locks
DBMS transactions and recovery 91
• Conflict-serializability is not used in commercial systems
• We will now study a method for concurrency control that is used in
commercial systems. Such method is based on the use of lock
• In the methods based on locks, a transaction must ask and get a
permission in order to operate on an element of the database. The lock
is a mechanism for a transaction to ask and get such a permission
Primitives for exclusive lock
DBMS transactions and recovery 92
• For the moment, we will consider exclusive locks. Later on, we
will take into account more general types of locks
• We introduce two new operations (besides read and write) that
can appear in transactions. Such operations are used to request and
release the exclusive use of a resource (element A in the database):
– Lock (exclusive):
– Unlock:
li(A)
ui(A)
• The lock operation li(A) means that transaction Ti requests
the exclusive use of element A of the database
• The unlock operation ui(A) means that transaction Ti
releases the lock on A, i.e., it renounces the use of A
Well-formed transactions and legal schedules
When using exclusive locks, transactions and schedules should obey two rules:
– Rule 1: Every transaction is well-formed. A transaction Ti is well-formed if every
action pi(A) (a read or a write on A) of Ti is contained in a “critical section”, i.e., in a
sequence of actions delimited by a pair of lock-unlock on A:
Ti: … li(A) … pi(A) … ui(A) ...
– Rule 2: The schedule is legal. A schedule S with locks is legal if no transaction
in it locks an element A when a different transaction has granted the lock on A
and has not yet unlocked A
S: ……li(A) ………………... ui(A) ……
no lj(A)
DBMS transactions and recovery 93
Schedule with exclusive locks: examples
T1 ill-formed: write
without lock. T2 ill-
formed: lock without
unlock.
S2 not legal
S1: l1(A) l1(B) r1(A) w1(B) l2(B) u1(A) u1(B) r2(B) w2(B) u2(B) l3(B) r3(B) u3(B)
T1 well-formed, S1 not legal
S2: l1(A) r1(A) w1(B) u1(A) u1(B) l2(B) r2(B) w2(B) l3(B) r3(B) u3(B)
S3: l1(A) r1(A) u1(A) l1(B) w1(B) u1(B) l2(B) r2(B) w2(B) u2(B) l3(B) r3(B) u3(B)
T1, T2, T3 well-formed, and S3 legal
DBMS transactions and recovery 94
Scheduler based on exclusive locks
DBMS transactions and recovery 95
A scheduler based on exclusive locks behaves as follows:
1. When an action request is issued by a transaction, the scheduler
checks whether this request makes the transaction ill-formed, in which
case the transaction is aborted by the scheduler.
2. When a lock request on A is issued by transaction Ti, while another
transaction Tj has a lock on A, the scheduler does not grant the request
(otherwise the schedule would become illegal), and Ti is blocked until
Tj releases the lock on A.
3. To trace all the locks granted, the scheduler manages a table of
locks, called lock table
In other words, the scheduler ensures that the current schedule
is legal and all its transactions are well-formed.
T2
T1
l1(A); r1(A)
A:=A+100; w1(A);
l1(B); r1(B); u1(A);
B:=B+100; w1(B); u1(B)
l2(A) – blocked!
l2(A) – re-started!
r2(A)
A:=Ax2; w2(A); u2(A)
l2(B); r2(B)
B:=Bx2; w2(B); u2(B)
Example of scheduler behaviour
DBMS transactions and recovery 96
T1 T2
l1(A); r1(A)
A:=A+100; w1(A); u1(A) 125
250
l2(A); r2(A)
A:=Ax2; w2(A); u2(A)
l2(B); r2(B)
B:=Bx2; w2(B); u2(B)
50
l1(B); r1(B)
B:=B+100; w1(B); u1(B) 150
250 150
Ghost update: isolation is not ensured by the use of locks
DBMS transactions and recovery 97
Is this sufficient for serializability?
A B
25 25
We have seen that the two rules for
- well-formed transactions
- legal schedules
are not sufficient for guaranteeing serializability
To come up with a correct policy for concurrency control through the use of exclusive
locks, we need a further rule (or, protocol), called “Two-Phase Locking (2PL)”:
Definition of two-phase locking (with only exclusive locks):A schedule S with
exclusive locks follows the two-phase locking protocol if in each transaction Ti appearing in
S, all lock operations precede all unlock operations.
S: ……. li(A) …… ui(A) ……
no unlock no lock
DBMS transactions and recovery 98
Two-Phase Locking (with exclusive locks)
Growing
Phase
DBMS transactions and recovery 99
Shrinking
Phase
Time
# lock granted
to Ti
The two phases of Two-Phase Locking
Locking and unlocking scheme in a transaction following the
2PL protocol
T1 T2
l1(A); r1(A)
A:=A+100; w1(A); u1(A) 125
250
l2(A); r2(A)
A:=Ax2; w2(A); u2(A)
l2(B); r2(B)
B:=Bx2; w2(B); u2(B)
50
l1(B); r1(B)
B:=B+100; w1(B); u1(B) 150
250 150
Example of a 2PL schedule
A B
25 25
DBMS transactions and recovery 100
l1(A); r1(A)
A:=A+100; w1(A)
l1(B)
u1(A)
r1(B)
B:=B+100
w1(B); u1(B)
l2(A); r2(A)
A:=Ax2;
w2(A); l2(B) – blocked
l2(B); - re-started u2(A); r2(B)
B:=Bx2; w2(B);
u2(B)
T1 T2
How the scheduler works in the 2PL protocol
The 2PL protocol
avoids the ghost
update while
accepting
concurrency
Note that the
scheduler still
checks that the
schedule is legal
DBMS transactions and recovery 101
l1(A); r1(A)
A:=A+100;
w1(A)
l1(B) – blocked
l2(B); r2(B)
B:=Bx2
w2(B)
l2(A) – blocked
T1 T2
The risk of deadlock
DBMS transactions and recovery 102
S: l1(A) r1(A) l2(B) r2(B) w1(A) w2(B) l1(B) l2(A)
To ensure that the schedule is legal, the scheduler blocks both T1 and T2, and
none of the two transactions can proceed. This is a deadlock (we will come
back to the methods for deadlock management).
Who issues the lock/unlock commands?
DBMS transactions and recovery 103
So far, we have assumed that transactions issue the lock/unlock commands. However, this is not
necessary.
Indeed, we can design a scheduler in such a way that it inserts the lock/unlock commands while
respecting the following conditions:
- Every transaction is well-formed
- The schedule is legal (if at all possible)
- Each transaction, extended with the inserted lock/unclock commands, follows the 2PL
protocol
For this reason, even in the presence of locks, we will continue to denote a schedule by means of a
sequence of read/write/commit commands. For example, the schedule
l1(A) r1(A) l1(B) u1(A) l2(A) w2(A) r1(B) w1(B) u1(B) l2(B) u2(A) r2(B) w2(B) u2(B)
can be denoted as:
r1(A) w2(A) r1(B) w1(B) r2(B) w2(B)
Scheduler based on exclusive locks and 2PL
DBMS transactions and recovery 104
We study how a scheduler based on exclusive locks and 2PL behaves during the analysis of the current
schedule (obviously, not necessarily complete):
1. If a request by transaction Ti shows that Ti is not well-formed, then Ti is aborted by the scheduler
2. If a lock request by transaction Ti shows that Ti does not follow the 2PL protocol, then Ti is
aborted by the scheduler
3. If a lock is requested for A by transaction Ti while A is used by a different transaction Tj, then
the scheduler blocks Ti, until Tj releases the lock on A. If the scheduler figures out that a
deadlock has occurred (or will occur), then the scheduler adopts a method for deadlock
management
4. To trace all the locks granted, the scheduler manages a table of locks, called lock table
Note that (1) and (2) do not occur if the lock/unlock commands are automatically insterted by the scheduler.
Simply put, the above behaviour means that the scheduler ensures that
1. the current schedule is legal
2. all its transactions are well-formed
3. all its transactions follow the 2PL protocol
2PL and conflict-serializability
DBMS transactions and recovery 105
To compare 2PL and conflict-serializability, we make use of the above
observation, and note that every schedule that includes lock/unlock
operations can be seen as a “traditional” schedule (by simply ignoring
such operations)
Theorem Every legal schedule constituted by well-formed transactions
following the 2PL protocol (with exclusive locks) is conflict-serializable.
2PL and conflict-serializability
DBMS transactions and recovery 106
Theorem There exists a conflict-serializable schedule that does not follow
the 2PL protocol (with exclusive locks).
Proof It is sufficient to consider the following schedule S:
r1(x) w1(x) r2(x) w2(x) r3(y) w1(y)
S is obviously conflict-serializable (the serial schedule T3,T1,T2 is conflict-equivalent to S), but it is easy
to show that we cannot insert in S the lock/unlock commands in such a way that all transactions are
well-formed and follow the 2PL protocol, and the resulting schedule is legal. Indeed, it suffices to
notice that we should insert in S the command u1(x) before r2(x), because in order for T2 to read x it
must hold the exclusive lock on x, and we should insert in S the command l1(y) after r3(y), because in
order for T3 to read y it must hold the exclusive lock on y, and therefore, the command l1(y), which is
necessary for executing w3(y), cannot be issued before r3(y). It follows that we cannot insert into S the
lock/unlock commands in such a way that the 2PL protocol is respected.
Shared locks
DBMS transactions and recovery 107
With exclusive locks, a transaction reading A must unlock A before another transaction can read the
same element A:
S: ... l1(A) r1(A) u1(A) … l2(A) r2(A) u2(A) …
Actually, this looks too restrictive, because the two read operations do not create any conflict. To
remedy this situation, we introduce a new type of lock: the shared lock.
We denote by sli(A) the command for the transaction Ti to ask for a shared lock on A.
With the use of shared locks, the above example changes as follows:
S: ... sl1(A) r1(A) sl2(A) r2(A) …. u1(A) u2(A)
The primitive for locks are now as follows: xli(A):
exclusive lock (also called write lock) sli(A): shared lock
(also called read lock) ui(A): unlock
Well-formed transactions with shared locks
DBMS transactions and recovery 108
With shared and exclusive locks, the following rule must be
respected.
Rule 1: We say that a transaction Ti is well-formed if
– every read ri(A) is preceded either by sli(A) or by xli(A), with no ui(A)
in between,
– every wi(A) is preceded by xli(A) with no ui(A) in between,
– every lock (sl or xl) on A by Ti is followed by an unlock on A by Ti.
Note that we allow Ti to first execute sli(A), probably for reading A,
and then to execute xli(A), probably for writing A without the unlock
of A by means of T. The transition from a shared lock on A by T to an
exclusive lock on the same element A by T (without an unlock on A
by T) is called “lock upgrade”.
Legal schedule with shared locks
DBMS transactions and recovery 109
With shared and exclusive locks, the following rule
must also be respected.
Rule 2: We say that a schedule S is legal if
– an xli(A) is not followed by any xlj(A) or by any slj(A) (with j different
from i) without an ui(A) in between
– an sli(A) is not followed by any xlj(A) (with j different from i) without
an ui(A) in between
Two-phase locking (with shared locks)
DBMS transactions and recovery 110
With shared locks, the two-phase locking rule becomes:
Definition of two-phase locking (with exclusive and shared locks): A schedule S
(with shared and exclusive locks) follows the 2PL protocol if in every transaction
Ti of S, all lock operations (either for exclusive or for shared locks) precede all
unlocking operations of Ti.
In other words, no action sli(X) or xli(X) can be preceded by an
operation of type ui(Y) in the schedule.
How locks are managed
DBMS transactions and recovery 111
S X
S yes no
X no no
Lock already
granted to Ti
on A
• The scheduler uses the so-called “compatibility matrix” (see
below) for deciding whether a lock request should be granted or
not.
• In the matrix, “S” stands for shared lock, “X” stands for
exclusive lock, “yes” stands for “requested granted” and “no”
stands for “requested not granted”
New lock requested by Tj  Ti on A
How locks are managed
DBMS transactions and recovery 112
• The problem for the scheduler of automatically inserting the
lock/unlock commands becomes more complex in the presence of
shared locks.
• Also, the execution of the unlock commands requires more work.
Indeed, when an unlock command on A is issued by Ti, there may
be several transactions waiting for a lock (either shared on
exclusive) on A, and the scheduler must decide to which
transaction to grant the lock. Several methods are possible:
• First-come-first-served
• Give priorities to the transactions asking for a shared lock
• Give priorities to the transactions asking for a lock upgrade
The first method is the most used one, because it avoids
“starvation”, i.e., the situation where a request of a transaction is
never granted.
Exercise 7
DBMS transactions and recovery 113
Consider the following schedule S:
r1(A) r2(A) r2(B) w1(A) w2(D) r3(C) r1(C) w3(B) c2
r4(A) c1 c4 c3
and tell whether S is in the class of 2PL schedules with
shared and exclusive locks
Exercise 7: solution
DBMS transactions and recovery 114
The schedule S:
r1(A) r2(A) r2(B) w1(A) w2(D) r3(C) r1(C) w3(B) c2 r4(A) c1 c4
c3
is in the class of 2PL schedules with shared and exclusive locks.
This can be shown as follows:
sl1(A) r1(A) sl2(A) r2(A) sl2(B) r2(B) xl2(D) u2(A) xl1(A) w1(A) w2(D)
sl3(C) r3(C) sl1(C) r1(C) u1(C) u1(A) u2(B) u2(D) xl3(B) w3(B) u3(B)
u3(C) c2 sl4(A) r4(A) u4(A) c1 c4 c3
Properties of two-phase locking (with shared locks)
DBMS transactions and recovery 115
The properties of two-phase locking with shared and exclusive locks are similar to
the case of exclusive locks only:
• Theorem Every legal schedule with well-formed transactions following the
two-phase locking protocol (with exclusive and shared locks) is conflict-
serializable.
• Theorem There exists a conflict-serializable schedule that does not follow
the 2PL protocol (with exclusive and shared locks).
• With shared locks, the risk of deadlock is still present, like in:
sl1(A) sl2(A) xl1(A) xl2(A)
2PL and conflict-serializability
We denote by “2PL schedule” the class of legal schedules with shared and exclusive locks
constituted by well-formed transactions following the 2PL protocol.
schedule serializable
schedule
DBMS transactions and recovery 116
conflict-serializable schedule
2PL schedule serial
schedule
2PL schedule with
exclusive locks
Recoverability and 2PL
DBMS transactions and recovery 117
• So far, when discussing about recoverability, ACR, strictness and
rigorousness we focused on:
– read, write
– rollback
– commit
• We still have to study the impact of these notions on the locking
mechanisms and the 2PL protocol
Strict two-phase locking (strict 2PL)
A schedule S is said to be in the strict 2PL class if
•S is in 2PL, and
•S is strict.
Tj
wj(A)
……
commit
uj(A)
ri(A)
Ti
DBMS transactions and recovery 118
Strict two-phase locking (strict 2PL)
With the goal of capturing the class of strict 2PL the following protocol has been
defined: A schedule S follows the strict 2PL protocol if it follows the 2PL protocol, and all
exclusive locks of every transaction T are kept by T until either T commits or rollbacks.
Tj Ti
wj(A)
rj(B)
…… uj(B)
commit
uj(A)
ri(A)
DBMS transactions and recovery 119
Properties of strict 2PL
DBMS transactions and recovery 120
• Every schedule following the strict 2PL protocol is strict: (See
exercise 7)
• Every schedule following the strict 2PL protocol is serializable:
it can be shown that every strict 2PL schedule S is conflict- equivalent to
the serial schedule S’ obtained from S by ignoring the transactions that
have rollbacked, and by choosing the order of transactions determined by
the order of commit (the first transaction in S’ is the first that has
committed, the second transaction in S’ is the second that has committed,
and so on)
Exercise 8
DBMS transactions and recovery 121
• Prove or disprove the following statement:
Every schedule following the strict 2PL protocol is strict.
• Prove or disprove the following statement:
Every schedule that is strict and follows the 2PL protocol also follows
the strict 2PL protocol.
The complete picture
schedule
serializable
conflict-serializable
2PL
ACR
strict serial
strict
2PL
DBMS transactions and recovery 122
1 - Transaction management
DBMS transactions and recovery 123
1. Transactions, concurrency, serializability
2. Recoverability
3. Concurrency control through locks
4. Concurrency control through timestamps
5. Transaction management in SQL
Concurrency based on timestamps
DBMS transactions and recovery 124
• Each transaction T has an associated timestamp ts(T) that is unique
among the active transactions, and is such that ts(Tj) < ts(Th)
whenever transaction Ti arrives at the scheduler before transaction
Th. In what follows, we assume that the timestamp of transaction Ti is simply
i: ts(Ti)=i.
• Note that the timestamps actually define a total order on
transactions, in the sense that they can be considered ordered
according to the order in which they arrive at the scheduler.
• Note also that every schedule respecting the timestamp order is conflict-
serializable, because it is conflict-equivalent to the serial schedule
corresponding to the timestamp order.
• Obviously, the use of timestamp avoids the use of locks. Note,
however, that deadlock may still occur.
The use of timestamp
DBMS transactions and recovery 125
• Transactions execute without any need of protocols.
• The basic idea is that, at each action execution, the scheduler checks whether the involved
timestamps violates the serializability condition according to the order induced by the
timestamps.
• In particular, we maintain the following data for each element X:
– rts(X): the highest timestamp among the active transactions that have read X
– wts(X): the highest timestamp among the active transactions that have written X (this
coincides with the timestamp of the last transaction that wrote X)
– wts-c(X): the timestamp of the last committed transaction that has written X
– cb(X): a bit (called commit-bit), that is false if the last transaction that wrote X has not
committed yet, and true otherwise.
The rules for timestamps
DBMS transactions and recovery 126
• Basic idea:
– the actions of transaction T in a schedule S must be considered as being
logically executed in one spot
– the logical time of an action of T is the timestamp of T, i.e., ts(T)
– the commit-bit is used to avoid the dirty read anomaly
• The system manages two “temporal axes”, corresponding to the
“physical” and to the “logical” time. The values rts(X) and wts(X)
indicate the timestamp of the transaction that was the last to
read and write X according to the logical time.
• An action of transaction T executed at the physical time t is
accepted if its ordering according to the physical temporal
order is compatible with respect to the logical time ts(T)
• This “compatibility principle” is checked by the scheduler.
• As we said before, we assume that the timestamp of each
transaction Ti coincide with the subscript i: ts(Ti)=i. In what
follows, t1,…,tn will denote physical times.
Rules – case 1a (read ok)
Case 1.a
B(T1) B(T2) B(T3) w1(X) r3(X) r2(X)
t1 t2 t3 t4 t5 t6
Consider r2(X) with respect to the last write on X, namely w1(X):
– the physical time of r2(X) is t6, that is greater than the physical time of w1 (t4)
– the logical time of r2(X) is ts(T2), that is greater than the logical time of w1(X), which is wts(X) =
ts(T1)
We conclude that there is no incompatibility between the physical and the logical time, and therefore we
proceed as follows:
1. if cb(X) is true, then
• generally speaking, after a read on X of T, rts(X) should be set to the maximum between
rts(X) and ts(T) – in the example, although, according to the physical time, r2(X) appears
after the last read r3(X) on X, it logically precedes r3(X), and therefore, if cb(X) was true,
rts(X) would remain equal to ts(T3)
• r2(X) is executed, and the schedule goes on
2. if cb(X) is false (as in the example), then T2 is put in a state waiting for the commit or the rollback of
the transaction T’ that was the last to write X (i.e., a state waiting for cb(X) equal true -- indeed,
cb(X) is set to true both when T’ commits, and when T’ rollbacks, because the transactions T’’ that
was the last to write X before T’ obviously committed, otherwise T’ would be still blocked)
DBMS transactions and recovery 127
Rules – case 1b (read too late)
Case 1.b
B(T1) B(T2) w2(X) r1(X)
t1 t2 t3 t4
Consider r1(X) with respect to the last write on X, namely w2(X):
– the physical time of r1(X) is t4, that is greater than the physical time of w2(X),
that is t3
– the logical time of r1(X) is ts(T1), that is less than the logical time of w2(X), i.e.,
wts(X) = ts(T2)
We conclude that r1(X) and w2(X) are incompatible.
Action r1(X) of T1 cannot be executed, T1 rollbacks, and a new execution of T1 starts,
with a new timestamp.
DBMS transactions and recovery 128
Rules – case 2a (write ok)
Consider w3(X) with respect to the last read on X (r1(X)) and the last write on X (w2(X)):
– the physical time of w3(X) is greater than that of r1(X) and w2(X)
– the logical time of w3(X) is greater than that of r1(X) and w2(X) We can
conclude that there is no incompatibility. Therefore:
1. if cb(X) is true or no active transaction wrote X, then
2. else
– we set wts(X) to ts(T3)
– we set cb(X) to false
– action w3(X) of T3 is executed, and the schedule goes on
T3 is put in a state waiting for the commit or the rollback of the transaction T’
that was the last to write X (i.e., a state waiting for cb(X)
equal true -- indeed, cb(X) is set to true both when T’ commits, and when T’ rollbacks,
because the transactions T’’ that was the last to write X before T’ obviously
committed, otherwise T’ would be still blocked)
Case 2.a
DBMS transactions and recovery 129
r1(X) w2(X) w3(X)
t4 t5 t6
B(T1) B(T2) B(T3)
t1 t2 t3
Rules – case 2b (Thomas rule)
• Consider w1(X) with respect to the last read r1(X) on X: the physical time of w1(X) is greater
than the physical time of r1(X), and, since w1(X) and r1(X) belong to the same transaction,
there is no incompatibility with respect to the logical time.
• However, on the logical time dimension, w2(X) comes after the write w1(X), and therefore,
the execution of w1(X) would correspond to an update loss. Therefore:
1. If cb(X) is true, we simply ignore w1(X) (i.e., w1(X) is not executed). In this way, the
effect is to correctly overwrite the value written by T1 on X with the value written by
T2 on X (it is like pretending that w1(X) came before w2(X)
2. if cb(X) is false, we let T1 waiting either for the commit or for the rollback of the
transaction that was the last to write X (i.e., a state waiting for cb(X) equal true -- indeed,
cb(X) is set to true both when T’ commits, and when T’ rollbacks, because the transactions
T’’ that was the last to write X before T’ obviously committed, otherwise T’ would be still
blocked)
Case 2.b
DBMS transactions and recovery 130
B(T1) B(T2)
t1 t2
r1(X) w2(X) …… w1(X)
t4 t5 …… t6
B(T3)
t3
Rules – case 2c (write too late)
Case 2.c
B(T1) B(T2) r2(X) w1(X)
t1 t2 t3 t4
Consider w1(X) with respect to the last read r2(X) on X:
– the physical time of w1(X) is t4, that is greater than the physical time of
r2(X), i.e., t3
– the logical time of w1(X) is ts(T1), that is less than the logical time of
r2(X), that is rts(X) = ts(T2)
We conclude that w1(X) and r2(X) are incompatible.
DBMS transactions and recovery 131
Action w1(X) is not executed, T1 is aborted, and is executed again with a
new timestamp.
Timestamp-based method: the scheduler
DBMS transactions and recovery 132
Action ri(X):
if
then
ts(Ti) >= wts(X)
if cb(X)=true or ts(Ti) = wts(X) // (case 1.a)
then set rts(X) = max(ts(Ti), rts(X)) and execute ri(X)
else put Ti in “waiting” for the commit or the rollback of the
last transaction that wrote X
// (case 1.a.1)
// (case 1.a.2)
else rollback(Ti) // (case 1.b)
Action wi(X):
if ts(Ti) >= rts(X) and ts(Ti) >= wts(X)
then if cb(X) = true
then set wts(X) = ts(Ti), cb(X) = false, and execute wi(X) else put Ti
in “waiting” for the commit or the
rollback of the last transaction that wrote X
// (case 2.a.1)
// (case 2.a.2)
else if ts(Ti) >= rts(X) and ts(Ti) < wts(X)
then if cb(X)=true
then ignore wi(X)
else put Ti in “waiting” for the commit or the
// (case 2.b)
// (case 2.b.1)
rollback of the last transaction that wrote X // (case 2.b.2)
else rollback(Ti) // (case 2.c)
Timestamp-based method: the scheduler
DBMS transactions and recovery 133
When Ti executes ci:
for each element X written by Ti, set
cb(X) = true
for each transaction Tj waiting for cb(X)=true or for the
rollback of the transaction that was the last to write
X, allow Tj to proceed
choose the transaction that proceeds
When Ti executes the rollback bi:
for each element X written by Ti, set wts(X) to be wts-c(X), i.e., the
timestamp of the transaction Tj that wrote X before Ti, and set cb(X) to
true (indeed, Tj has surely committed)
for each transaction Tj waiting for cb(X)=true or for the
rollback of the transaction that was the last to write
X allow Tj to proceed
choose the transaction that proceeds
Deadlock with the timestamps
DBMS transactions and recovery 134
Unfortunately, the method based on timestamps does not avoid the risk of
deadlock (although the probability is lower than in the case of locks).
The deadlock is related to the use of the commit-bit. Consider the following
example:
w1(B), w2(A), w1(A), r2(B)
When executing w1(A), T1 is put in waiting for the commit or the rollback of T2.
When executing r2(B), T2 is put in waiting for the commit or the rollback of T1.
The deadlock problem in the method based on timestamps is handled with the
same techniques used in the 2PL method.
The method based on timestamp: example
DBMS transactions and recovery 135
Action Effect New values
r6(A) ok rts(A) = 6
r8(A) ok rts(A) = 8
r9(A) ok rts(A) = 9
w8(A) no T8 aborted
w11(A) ok wts(A) = 11
r10(A) no T10 aborted
c11 ok cb(A) = true
Timestamps and conflict-serializability
DBMS transactions and recovery 136
• There are conflict-serializable schedules that are not accepted by the timestamp- based
scheduler, such as:
r1(Y) r2(X) w1(X)
• If the schedule S is accepted by the timestamp-based scheduler and does not use the Thomas
rule, then the schedule obtained from S by removing all actions of rollbacked transactions is
conflict-serializable
• If the schedule S is accepted by the timestamp-based scheduler and does use the Thomas
rule, then S may be non conflict-serializable, like for example:
r1(A) w2(A) c2 w1(A) c1
However, if the schedule S is accepted by the timestamp-based scheduler and does use the
Thomas rule, then the schedule obtained from S by removing all actions ignored by the
Thomas rules and all actions of rollbacked transactions is conflict-serializable
Comparison between timestamps and 2PL
DBMS transactions and recovery 137
• There are schedules that are accepted by timestamp- based
schedulers that are not 2PL, such as
r1(A) w2(A) r3(A) r1(B) w2(B) r1(C) w3(C) r4(C) w4(B) w5(B)
(that is not 2PL because T2 must release the lock on A before
asking for the lock on B)
• Obviously, there are schedules that are accepted by the
timestamp-based schedulers and are also strict 2PL schedules,
such as the serial schedule:
r1(A) w1(A) r2(A) w2(A)
• There are strong strict 2PL schedules that are not accepted by the
timestamp-based scheduler, such as:
r1(B) r2(A) w2(A) r1(A) w1(A)
Comparison between timestamps and 2PL
DBMS transactions and recovery 138
• Waiting stage
– 2PL: transactions are put in waiting stage
– TS: transactions are killed and re-started
• Serialization order
– 2PL: determined by conflicts
– TS: determined by timestamps
• Need to wait for commit by other transactions
– 2PL: solved by the strong strict 2PL protocol
– TS: buffering of write actions (waiting for cb(X) = true)
• Deadlock
– 2PL: risk of deadlock
– TS: deadlock is less probable
Comparison between timestamps and 2PL
DBMS transactions and recovery 139
• Timestamp-based method is superior when transactions are “read- only”, or
when concurrent transactions rarely write the same elements
• 2PL is superior when the number of conflicts is high because:
– although locking may delay transactions and may cause deadlock (and
therefore rollback),
– the probability of rollback is higher in the case of the timestamp- based
method, and this causes a greater global delay of the system
• In the following picture, the set indicated by “timestamp” denotes the set of
schedules generated by the timestamp-based scheduler, where all actions ignored
by the Thomas rule and all actions of rollbacked transactions are removed
Multiversion timestamp
DBMS transactions and recovery 140
Idea: do not block the read actions! This is done by introducing different versions X1 … Xn of
element X, so that every read can be always executed, provided that the “right” version
(according to the logical time determined by the timestamp) is chosen
– Every “legal” write wi(X) generates a new version Xi (in our notation, the subscript
corresponds to the timestamp of the transaction that generated X)
– To each version Xh of X, the timestamp wts(Xh)=ts(Th) is associated, denoting the ts of the
transaction that wrote that version
– To each version Xh of X, the timestamp rts(Xh)=ts(Ti) is associated, denoting the highest
ts among those of the transactions that read Xh
The properties of the multiversion timestamp are similar to those of the timestamp method.
New rules for the use of timestamps
DBMS transactions and recovery 141
The scheduler uses timestamps as follows:
– when executing wi(X): if a read rj(Xk) such that wts(Xk) < ts(Ti) < ts(Tj) already occurred,
then the write is refused (it is a “write too late” case, because transaction Tj, that is older
than Ti, has already read a version of X that precedes version Xi), otherwise the write is
executed on a new version Xi of X, and we set wts(Xi) = ts(Ti).
– ri(X): the read is executed on the version Xj such that wts(Xj) is the highest write timestamp
among the versions of X having a write timestamp less than or equal to ts(Ti), i.e.: Xj is such
that wts(Xj) <= ts(Ti), and there is no version Xh such that wts(Xj) < wts(Xh) <= ts(Ti). Note
that such a version always exists, because it is impossible that all versions of X are greater
than ts(Ti). Obviously, rts(Xj) is updated in the usual way.
– For Xj with wts(Xj) such that no active transaction has timestamp less than j, the versions
of X that precede Xj are deleted, from the oldest to the newest.
– To ensure recoverability, the commit of Ti is delayed until all commit of the transactions
Tj that wrote versions read by Ti are executed.
New rules for the use of timestamps
DBMS transactions and recovery 142
The scheduler uses suitable data structures:
– For each version Xi the scheduler maintains a range range(Xi) = [wts, rts], where wts is
the timestamp of the transaction that wrote Xi, and rts is the highest timestamp
among those of the transactions that read Xi (if no one read Xi, then rts=wts).
– We denote with ranges(X) the set:
{ range(Xi) | Xi is a version of X }
– When ri(X) is processed, the scheduler uses ranges(X) to find the version Xj such that
range(Xj) = [wts, rts] has the highest wts that is less than or equal to the timestamp
ts(Ti) of Ti. Moreover, if ts(Ti) > rts, then the rts of range(Xj) is set to ts(Ti).
– When wi(x) is processed, the scheduler uses ranges(X) to find the version Xj such that
range(Xj) = [wts, rts] has the highest wts that is less than or equal to the timestamp
ts(Ti) of Ti. Moreover, if rts > ts(Ti), then wi(X) is rejected, else wi(Xi) is accepted, and
the version Xi with range(Xi) = [wts, rts], with wts = rts = ts(Ti) is created.
Multiversion timestamp: example
Suppose that the current version of A is A0, with rts(A0)=0.
T5(ts=5)
T1(ts=1) T2(ts=2) T3(ts=3) T4(ts=4)
r1(A)
w1(A)
r2(A)
w2(A)
reads A0, and set rts(A0)=1
writes the new version A1
reads A1, and set rts(A1)=2
writes the new version
A2
r4(A)
r5(A)
w3(A)
reads A2, and set rts(A2)=4
reads A2, and set rts(A2)=5
rollback T3
DBMS transactions and recovery 143
strong
2PL
The final picture
schedule
serializable
conflict-serializable
2PL
recoverable
ACR
strict
serial
time
stamp
DBMS transactions and recovery 144
1 - Transaction management
DBMS transactions and recovery 145
1. Transactions, concurrency, serializability
2. Recoverability
3. Concurrency control through locks
4. Concurrency control through timestamps
5. Transaction management in SQL
Transaction management in SQL
DBMS transactions and recovery 146
• SQL-92 has constructs for defining transactions and
concurrency levels
• A single SELECT statement is considered as an atomic execution unit
• SQL does not have an explicit BEGIN TRANSACTION statement
• In SQL, every transaction must have an explicit termination
statement (COMMIT or ROLLBACK)
Example
DBMS transactions and recovery 147
EXEC SQL WHENEVER sqlerror GO TO ESCI; EXEC
SQL SET TRANSACTION
READ WRITE , DIAGNOSTICS SIZE 8,
ISOLATION LEVEL SERIALIZABLE;
EXEC SQL INSERT INTO
EMPLOYEE (Name, ID, Address)
VALUES (‘John Doe',1234,‘xyz');
EXEC SQL UPDATE EMPLOYEE
SET Address = ‘abc'
WHERE ID = 1000;
EXEC SQL COMMIT;
GOTO FINE;
ESCI:
FINE:
EXEC SQL ROLLBACK;
…
Ghost read
DBMS transactions and recovery 148
• Since SQL considers a whole query as an atomic execution unit, we must
consider a further anomaly, the so-called ghost read
• Example:
– T1 executes query SELECT * FROM R
– T2 adds a record r to relation R
– T1 executes the previous query again: the result of the second
query contains record r, which was not in the first result
• The ghost read anomaly is a generalized version of the
unrepeatable read anomaly, in which the read operation retrieves
a set of records instead of a single one
SET TRANSACTION
DBMS transactions and recovery 149
• The SET TRANSACTION statement allows for defining the
following aspects:
• Access mode: READ ONLY or READ WRITE
• Isolation level of the transaction: can assume one of the
following values:
– READ UNCOMMITTED
– READ COMMITTED
– REPEATABLE READ
– SERIALIZABLE (default value)
• Configuration of the number of error conditions that can be handled
(DIAGNOSTIC SIZE n)
Isolation levels
DBMS transactions and recovery 150
(We assume that the SET TRANSACTION statement is relative to
transaction Ti)
• SERIALIZABLE:
– Transaction Ti only reads from committed transactions
– No value read or written by transaction Ti can be modified until Ti
commits
– The set of records read by Ti through a query cannot be modified
by other transactions until Ti commits (this condition avoids the
ghost read anomaly)
Isolation levels
DBMS transactions and recovery 151
• REPEATABLE READ:
– Transaction Ti only reads from committed transactions
– No value read or written by transaction Ti can be modified until Ti
commits
– The set of records read by Ti through a query can be modified by
other transactions until Ti commits (the ghost read anomaly is thus
possible)
Isolation levels
DBMS transactions and recovery 152
• READ COMMITTED:
– Transaction Ti only reads from committed transactions
– No value written by transaction Ti can be modified until Ti commits,
while values read by Ti can be modified by other transactions (thus,
both the ghost read anomaly and the unrepeatable read anomaly
are possible)
Isolation levels
DBMS transactions and recovery 153
• READ UNCOMMITTED:
– Transaction Ti can read from any (even uncommitted)
transaction (cascading rollback is thus possible)
– Values both read and written by Ti can be modified by othwr
transactions (thus, besides ghost read and unrepeatable read, also
the dirty read anomaly is possible)
Transaction management in commercial systems
DBMS transactions and recovery 154
– The transaction managers of the main commercial systems (Oracle, DB2,
SQL Server, PostgreSQL) use schedulers based on lock and/or
(multiversion) timestamp methods
– In such systems, the scheduler usually distinguishes between two
classes of transactions:
– The transactions with read and write are executed under the 2PL
protocol
– The transactions that are “read only” are executed under the method
of multiversion timestamp
2. Recovery management
DBMS transactions and recovery 155
SQL engine
Access file manager
Buffer manager
Security and
recovery
manager
Disk manager
Data
SQL commands
DBMS
Transaction
manager
DBMS transactions and recovery 156
Architecture of a DBMS
The recovery manager
DBMS transactions and recovery 157
The transaction manager is mainly concerned with isolation and
consistency, while the recovery manager is mainly concerned with
atomicity and persistency.
It is responsible for:
– Beginning the execution of transactions
– Committing transactions
– Executing the rollback of transactions
– Restore a correct state of the database following a fault
condition
It uses a special data structure, called log file
Failure types
DBMS transactions and recovery 158
• System failures
– System crash:
• We loose the buffer content, not the secondary storage content
– System error or application exception
• E.g. division by zero
– Local error conditions of a transaction
– Concurrency control
• The scheduler forces the rollback of a transaction
• Storage media failures
– Disk failures
• We loose secondary storage content, but not the log file content
– Catastrophic events”
• Fire
• Flooding
The strategies depend on the failures
DBMS transactions and recovery 159
• System failures:
– Information loss in the buffer, not in the data
– Main risk for  Atomicity
– Recovery strategy:
• Periodically register the system status (checkpoint)
• Analyze back the DB change history
• Undo and redo some operations
• Using the log
• Media failure:
– Information loss in th data
– Main risk for  Durability
– Recovery strategy :
• Load the most recent available DB back-up
• Reconstruct that state using the log, starting the dump
The log file
DBMS transactions and recovery 160
• The log file (or, simply, the log) records the actions of the various
transactions in a stable storage (stable means “failure resistant”)
• Read and write operations on the log are executed as the operations on
the database, i.e., through the buffer. Note that writing on the stable
storage is generally done through “force”
• The stable storage is an abstraction: stability is achieved through
replication
• The physical organization of the log can be based on:
– Tapes
– Disk (perhaps coupled with tapes)
– Two replicated disks
The structure of log
DBMS transactions and recovery 161
• The log is a sequential file (assumed to be failure-free). The operations on the log are:
append a record at the end, scan the file sequentially forward, scan backward.
• The log records the actions of the transactions, in chronologically order.
• Two types of records in the log:
– Transaction records (begin, insert, delete, update, commit, abort)
– System records (checkpoint, dump)
• Please, do not confuse the transaction actions with the actions on the secondary
storage. In particular, the actions of the transactions are assumed to be executed on the
DB when they are recorded in the log (even if their effects are not registered yet in the
secondary storage)
The transaction records
DBMS transactions and recovery 162
O = element of the DB
AS = After State, value of O after the operation
BS = Before State, value of O before the operation
For each transaction T, the transaction records are stored in the log as
follows:
– begin:
– insert:
– delete:
– update:
– commit:
– abort:
B(T)
I(T,O,AS)
D(T,O,BS)
U(T,O,BS,AS)
C(T)
A(T)
Checkpoint
DBMS transactions and recovery 163
• The goal of the checkpoint is to register in the log the set of active transactions
T1, …, Tn so as to differentiate them from the committed transactions
• The checkpoint (CK) operation executes the following actions:
– For each committed transaction after the last checkpoint, their buffer pages are
copied into the secondary storage (through flush)
– A record CK(T1,…Tn) is written on the log (through force), where T1,…Tn identify all
active transactions that are uncommitted
• It follows that:
– For each transaction T such that Commit(T) precedes CK(T1,…Tn) in the log, we can
avoid the “redo” in case of failure
• The checkpoint operation is executed periodically, with fixed frequency
Dump
DBMS transactions and recovery 164
• The dump is a copy of the entire state of the DB
• The dump operation is executed offline (all transactions are
suspended)
• It produces a backup, i.e., the DB is saved in stable storage
• It writes (through force) a dump record in the log
Example: log with checkpoint and dump
CK
Crash
B(T1) B(T2) B(T3)
U(T3,…)
U(T1,…)
C(T2)
U(T2,…) U(T1,…)
U(T1,…)
dump
DBMS transactions and recovery 165
The Undo operation
DBMS transactions and recovery 166
• Restore the state of an element O at the time preceding the
execution of an action
• update, delete:
– assigns the BS value to O
• insert:
– delete O
The Redo operation
DBMS transactions and recovery 167
• Restore the state of an element O at the time following the
execution of an action
• insert, update:
– assigns the value AS to O
• delete:
– delete O
Atomicity of transactions
DBMS transactions and recovery 168
• The outcome of a transaction is established when either the Commit(T) record
or the Abort(T) record is written in the log
– The Commit(T) record is written synchronously (force) from the buffer to the log
– The Abort(T) record is written asynchronously (flush) from the buffer to the log
(the recovery manager does not need to know immediately that a transaction is
aborted)
• When a failure occurs, for a transaction
– Uncommitted: since atomicity has to be ensured, in general we may need to
undo the actions, especially if there is the possibility that the actions have been
executed on the secondary storage  Undo
– Committed: we need to redo the actions, to ensure durability  Redo
Writing records in the log
DBMS transactions and recovery 169
The recovery manager follows this rule:
• WAL (write-ahead log)
– The log records are written from the buffer to the log before
the corresponding records are written in the secondary storage
– This is important for the effectiveness of the Undo operation, because
the old value can always be written back to the secondary storage by
using the BS value written in the log. In other words, WAL allows to
undo write operations executed by uncommitted transactions
Writing records in the log
DBMS transactions and recovery 170
The recovery manager follows this rule:
• Commit-Precedence
– The log records are written from the buffer to the log before the
commit of the transaction (and therefore before writing the commit
record of the transaction in the log)
– This is important for the effectiveness of the Redo operation,
because if a transaction committed before a failure, but its pages
have not been written yet in secondary storage, we can use the AS
value in the log to write such pages. In other words, the
Commit-Precedence rule
allows committed transactions whose effects have not been
registered yet in the database to be redone.
Writing in secondary storage
DBMS transactions and recovery 171
For each operation
– Update
– Insert
– Delete
The recovery manager must decide on the strategy for writing
in secondary storage
In the following, we concentrate on update, but similar
considerations hold for the other operations
Writing in secondary storage
DBMS transactions and recovery 172
There are three possible methods for writing values into the secondary storage, all coherent
with the WAL and the commit-precedence rules
• Immediate effect
– The update operations are executed immediately on the secondary storage after the
corresponding records are written in the log
– The buffer manager writes (either with force or flush) the effect of an operation by a transaction
T on the secondary storage before writing the commit record of T in log
– It follows that all the pages of the DB modified by a transaction are certainly written in
the secondary storage
• Delayed effect
– The update operations by a transaction T are executed on the secondary storage only after the
commit of the transaction, i.e., only after the commit record of T has been written in the log
– As usual, the log records are written in the log before the corresponding data are written in
secondary storage
• Mixed effect
– For an operation O, both the immediate effect and and the delayed effect are possible,
depending on the choice of the buffer manager
Examples
Immediate
DBMS transactions and recovery 173
Delayed
Mixed
(T)
Writes on the log
Writes on the database
(T)
(T)
Immediate effect
• The secondary storage may contain AS values from uncomitted
transactions
• Undo of transactions that are uncomitted when the failure occurs is
needed
• Redo is not needed (if the commit record of T is in the log, all pages of T
have been written in secondary storage)
dump CK Crash
T1
T2
T3
T4
T5
Nothing
Nothing
Nothing
Undo
Undo
DBMS transactions and recovery 174
Delayed effect
• The secondary storage does not contain AS values from
uncomitted transactions
• Undo is not needed (when we rollback a transaction T, nothing has been
done by T on the secondary storage)
• Redo is needed
dump CK Crash
T1
T2
T3
T4
T5
Nothing
Redo
Redo
Nothing
Nothing
DBMS transactions and recovery 175
Mixed effect
• The buffer manager decides its strategy for each of the operation (for
this reason, this is the most used method). In particular, this strategy
allows to to optimize the execution of the flush operation
• Both Undo and Redo are needed
dump CK Crash
T1
T2
T3
T4
T5
Redo
Redo
Undo
Undo
Nothing
DBMS transactions and recovery 176
Two types of recovery
DBMS transactions and recovery 177
Depending on the type of failure…
• In case of system failure:
– Warm restart
• In case of disk failure:
– Cold restart
Warm restart
DBMS transactions and recovery 178
We will assume the mixed effect strategy. The warm restart is constituted by 5 steps:
1. We go backward through the log until the most recent checkpoint record in
the log
2. We set s(UNDO) = { active transactions at checkpoint } s(REDO) = { }
3. We go forward through the log adding to s(UNDO) the transactions with the
corresponding begin record, and moving those with the commit record to
s(REDO)
4. Undo phase: we go backward through the log again, undoing the transactions in
s(Undo) until the begin record of the oldest transaction in the set of active
transactions at the last checkpoint (note that we may even go before the most
recent checkpoint record)
5. Redo phase: we go forward through the log again, redoing the
transactions in s(Redo)
Warm restart: example
B(T1)
B(T2)
U(T2, O1, B1, A1)
I(T1, O2, A2)
B(T3)
C(T1)
B(T4)
U(T3,O2,B3,A3)
U(T4,O3,B4,A4)
CK(T2,T3,T4)
C(T4)
B(T5)
U(T3,O3,B5,A5)
U(T5,O4,B6,A6)
D(T3,O5,B7)
A(T3)
C(T5)
I(T2,O6,A8)
CK Crash
T4
T1
T2
T3
T5
C
A
C
C
DBMS transactions and recovery 179
Example: the most recent checkpoint
B(T1)
B(T2)
U(T2, O1, B1, A1)
I(T1, O2, A2)
B(T3)
C(T1)
B(T4)
U(T3,O2,B3,A3)
U(T4,O3,B4,A4)
CK(T2,T3,T4)
C(T4)
B(T5)
U(T3,O3,B5,A5)
U(T5,O4,B6,A6)
D(T3,O5,B7)
A(T3)
C(T5)
I(T2,O6,A8)
Crash
T4
T1
T2
T3
T5
C
UNDO = {T2,T3,T4}
CK
A
DBMS transactions and recovery 180
C
C
Example: s(UNDO) and s(REDO)
B(T1)
B(T2)
8. U(T2, O1, B1, A1)
I(T1, O2, A2)
B(T3)
C(T1)
B(T4)
7. U(T3,O2,B3,A3)
9. U(T4,O3,B4,A4)
1. C(T4)
2. B(T5)
6. U(T3,O3,B5,A5)
10. U(T5,O4,B6,A6)
5. D(T3,O5,B7)
A(T3)
3. C(T5)
4. I(T2,O6,A8)
0. UNDO = {T2,T3,T4}. REDO = {}
1. C(T4)  UNDO = {T2, T3}. REDO = {T4}
2. B(T5)  UNDO = {T2,T3,T5}. REDO = {T4}
3. C(T5)  UNDO = {T2,T3}. REDO = {T4, T5}
DBMS transactions and recovery 181
Example: the UNDO phase
B(T1)
B(T2)
8. U(T2, O1, B1, A1)
I(T1, O2, A2)
B(T3)
C(T1)
B(T4)
7. U(T3,O2,B3,A3)
9. U(T4,O3,B4,A4)
1. C(T4)
2. B(T5)
6. U(T3,O3,B5,A5)
10. U(T5,O4,B6,A6)
5. D(T3,O5,B7)
A(T3)
3. C(T5)
4. I(T2,O6,A8)
0. UNDO = {T2,T3,T4}. REDO = {}
1. C(T4)  UNDO = {T2, T3}. REDO = {T4}
2. B(T5)  UNDO = {T2,T3,T5}. REDO = {T4}
3. C(T5)  UNDO = {T2,T3}. REDO = {T4, T5}
4. D(O6)
5. O5 =B7
6. O3 = B5
7. O2 =B3
8. O1=B1
Undo phase
DBMS transactions and recovery 182
Example: the REDO phase
B(T1)
B(T2)
8. U(T2, O1, B1, A1)
I(T1, O2, A2) B(T3)
C(T1)
B(T4)
7. U(T3,O2,B3,A3)
9. U(T4,O3,B4,A4)
1. C(T4)
2. B(T5)
6. U(T3,O3,B5,A5)
10. U(T5,O4,B6,A6)
5. D(T3,O5,B7)
A(T3)
3. C(T5)
4. I(T2,O6,A8)
0. UNDO = {T2,T3,T4}. REDO = {}
1. C(T4)  UNDO = {T2, T3}. REDO = {T4}
2. B(T5)  UNDO = {T2,T3,T5}. REDO = {T4}
3. C(T5)  UNDO = {T2,T3}. REDO = {T4, T5}
4. D(O6)
5. O5 =B7
6. O3 = B5
7. O2 =B3
8. O1=B1
9. O3 = A4
10. O4 = A6
Undo phase
Redo phase
DBMS transactions and recovery 183
Cold restart
DBMS transactions and recovery 184
It is constituted by three phases:
1. Search for the most recent dump record in the log, and load the
dump into the secondary storage (more precisely, we selectively copy
the fragments of the DB that have been damaged by the disk failure)
2. Forward recovery of the dump state:
1. We re-apply all actions in the log, in the order
determined by the log
2. At this point, we have the database state immediately
before the crash
3. We execute the warm restart procedure
Exercise: cold restart
DBMS transactions and recovery 185
• Consider the following log: DUMP, B(T1), B(T2), B(T3),
I(T1,O1,A1), D(T2,O2,B2), B(T4), U(T4,O3,B3,A3),
U(T1,O4,B4,A4), C(T2), CK(T1,T3, T4), B(T5), B(T6),
U(T5,O5,B5,A5), A(T3), CK(T1,T4,T5,T6), B(T7), A(T4),
U(T7,O6,B6,A6), U(T6,O3,B7,A7), B(T8), C(T7)
• Suppose that a disk failure occurs. Assume the mixed strategy.
Solution: reconstruct the DB from DUMP
DBMS transactions and recovery 186
• DUMP, B(T1), B(T2), B(T3), I(T1,O1,A1), D(T2,O2,B2), B(T4),
U(T4,O3,B3,A3), U(T1,O4,B4,A4), C(T2), CK(T1,T3, T4), B(T5),
B(T6), U(T5,O5,B5,A5), A(T3), CK(T1,T4,T5,T6), B(T7), A(T4),
U(T7,O6,B6,A6), U(T6,O3,B7,A7), B(T8), C(T7)
• We go to the most recent dump record in the log (the first record),
and load the dump into the secondary storage
• We scan the log forward starting from B(T1), and we execute all actions
in the log, until C(T7)
• We execute the warm restart procedure
Solution: warm restart
B(T1),
B(T2),
B(T3),
I(T1,O1,A1),
D(T2,O2,B2),
B(T4),
U(T4,O3,B3,A3),
U(T1,O4,B4,A4),
C(T2), CK(T1,T3,
T4), B(T5),
B(T6),
U(T5,O5,B5,A5),
A(T3),
CK(T1,T4,T5,T6),
B(T7),
A(T4),
U(T7,O6,B6,A6),
U(T6,O3,B7,A7),
B(T8),
C(T7)
CK Crash
T4
T1
T2
T3
T5
C
A
T6
T7
T8
C
CK
DBMS transactions and recovery 187
A
Solution: most recent checkpoint
B(T1),
B(T2),
B(T3),
I(T1,O1,A1),
D(T2,O2,B2),
B(T4),
U(T4,O3,B3,A3),
U(T1,O4,B4,A4),
C(T2), CK(T1,T3,
T4), B(T5),
B(T6),
U(T5,O5,B5,A5),
A(T3),
CK(T1,T4,T5,T6),
B(T7),
A(T4),
U(T7,O6,B6,A6),
U(T6,O3,B7,A7),
B(T8),
C(T7)
Crash
UNDO = {T1, T4, T5, T6}
CK
T1
T2
T3
T4
T5
T6
T7
T8
C
A
C
DBMS transactions and recovery 188
A
Solution: the UNDO and REDO sets
0. UNDO = {T1, T4, T5, T6}. REDO = {}
1. B(T7)  {T1, T4, T5, T6, T7}. REDO = {}
2. B(T8)  {T1, T4, T5, T6, T7, T8}. REDO = {}
3. C(T7)  {T1, T4, T5, T6, T8}. REDO = {T7}
B(T1),
B(T2),
B(T3),
I(T1,O1,A1),
D(T2,O2,B2),
B(T4),
U(T4,O3,B3,A3),
U(T1,O4,B4,A4),
C(T2), CK(T1,T3,
T4), B(T5),
B(T6),
U(T5,O5,B5,A5),
A(T3),
CK(T1,T4,T5,T6),
B(T7),
A(T4),
U(T7,O6,B6,A6),
U(T6,O3,B7,A7),
B(T8),
C(T7) DBMS transactions and recovery 189
Solution: the UNDO phase
0. UNDO = {T1, T4, T5, T6}. REDO = {}
1. B(T7)  {T1, T4, T5, T6, T7}. REDO = {}
2. B(T8)  {T1, T4, T5, T6, T7, T8}. REDO = {}
3. C(T7)  {T1, T4, T5, T6, T8}. REDO = {T7}
4. O3 = B7
5. O5 = B5
6. O4 = B4
7. O3 = B3
8. D(O1)
B(T1),
B(T2),
B(T3),
I(T1,O1,A1),
D(T2,O2,B2),
B(T4),
U(T4,O3,B3,A3),
U(T1,O4,B4,A4),
C(T2), CK(T1,T3,
T4), B(T5),
B(T6),
U(T5,O5,B5,A5),
A(T3),
CK(T1,T4,T5,T6),
B(T7),
A(T4),
U(T7,O6,B6,A6),
U(T6,O3,B7,A7),
B(T8),
C(T7)
Undo phase
DBMS transactions and recovery 190
Solution: the REDO phase
0. UNDO = {T1, T4, T5, T6}. REDO = {}
1. B(T7)  {T1, T4, T5, T6, T7}. REDO = {}
2. B(T8)  {T1, T4, T5, T6, T7, T8}. REDO = {}
3. C(T5)  {T1, T4, T5, T6, T8}. REDO = {T7}
4. O3 = B7
5. O5 = B5
6. O4 = B4
7. O3 = B3
8. D(O1)
9. O6 = A6
B(T1),
B(T2),
B(T3),
I(T1,O1,A1),
D(T2,O2,B2),
B(T4),
U(T4,O3,B3,A3),
U(T1,O4,B4,A4),
C(T2), CK(T1,T3,
T4), B(T5),
B(T6),
U(T5,O5,B5,A5),
A(T3),
CK(T1,T4,T5,T6),
B(T7),
A(T4),
U(T7,O6,B6,A6),
U(T6,O3,B7,A7),
B(T8),
C(T7)
Redo phase
DBMS transactions and recovery 191
Undo phase
RECOVERY WITH CONCURRENT TRANSACTION
PRESENTED BY M . LAVANYA
M.Sc(CS & IT)
NADAR SARASWATHI COLLEGE OF ARTS &SCIENCE VADAPUDUPATTI
, THENI.
INTRODUCTION
• Recovery in a single transaction at a time is executing
• We can modify and extend the log-based recovery scheme with multiple
concurrent transactions.
• The system has a single disk buffer and a single log.
• Immediate update and permit a buffer block to update the data item.
INTERACTION WITH CONCURRENCY CONTROL
• Concurrency control using strict two-phase locking:
how to perform undo if updates A , then t2 updates A and commits and finally t1 h as to
abort.
• Logging is done as
log records of different transactions may be interspersed in the log .
• The check pointing techniques and actions taken on recovery have to be changed
several transactions may be active when a check point is performed.
Transaction Rollback
• Roll back a failed transaction, Ti, by using the log. The system scans the log back- ward; for
every log record of the form <Ti, Xj , V1, V2> found in the log, the system restores the data
item Xj to its old value V1.
• Scanning of the log terminates when the log record <Ti, start> is found.
• Scanning the log backward is important, since a transaction may have updated a data item more
than once. As an illustration, consider the pair of log records
<Ti,A, 10, 20>
<Ti,A, 20, 30>
Checkpoints
checkpoints to reduce the number of log records that the system must scan when it
recovers from a crash. Since we assumed no concurrency, it was necessary to
consider only the following transactions during recovery:
• Those transactions that started after the most recent checkpoint
• The one transaction, if any, that was active at the time of the
most recent check- point
• In a concurrent transaction-processing system, we require that the checkpoint log
record be of the form <checkpoint L>, where L is a list of transactions active at
the time of the checkpoint.
• The requirement that transactions must not perform any
updates to buffer blocks or to the log during check pointing.
• A fuzzy checkpoint is a check- point where transactions are allowed to perform
updates even while buffer blocks
• The system constructs the two lists as follows: Initially, they are both empty. The
system scans the log backward, examining each record, until it find the first.
<checkpoint> record:
• For each record found of the form <Ti commit>, it adds Ti to redo-list.
• For each record found of the form <Ti start>, if Ti is not in redo-list, then it adds Ti to
undo-list.
The recovery proceeds as follows:
1. The system rescans the log from the most recent record backward, and per- forms
an undo for each log record that belongs transaction Ti on the undo-list.
2. The system locates the most recent <checkpoint L> record on the log. Notice that
this step may involve scanning the log forward, if the checkpoint record was passed
in step 1.
3. The system scans the log forward from the most recent
<checkpoint L> record, and performs redo for each log record that belongs to a
transaction Ti that is on the redo-list.
• It is important to undo the transaction in the undo-list before redoing transactions in the redo-
list, using the algorithm in steps 1 to 3; otherwise, a problem may occur. Suppose that data
item A initially has the value 10.
• another transaction Tj then updated data item A to 30 and committed, following which the
system crashed. The state of the log at the time of the crash is
<Ti, A, 10, 20>
<Tj , A, 10, 30>
<Tj commit>
db unit 4 dbms  protocols in transaction

More Related Content

Similar to db unit 4 dbms protocols in transaction

Concurrency Control Techniques
Concurrency Control TechniquesConcurrency Control Techniques
Concurrency Control TechniquesRaj vardhan
 
3 concurrency controlone_v3
3 concurrency controlone_v33 concurrency controlone_v3
3 concurrency controlone_v3ashish61_scs
 
Concurrency Control & Deadlock Handling
Concurrency Control & Deadlock HandlingConcurrency Control & Deadlock Handling
Concurrency Control & Deadlock HandlingMeghaj Mallick
 
UNIT-IV: Transaction Processing Concepts
UNIT-IV: Transaction Processing ConceptsUNIT-IV: Transaction Processing Concepts
UNIT-IV: Transaction Processing ConceptsRaj vardhan
 
DBMS Presentation.pptx
DBMS Presentation.pptxDBMS Presentation.pptx
DBMS Presentation.pptxPravinBhargav1
 
Unit 4 Concurrency control.pptx dbms lovely
Unit 4 Concurrency control.pptx dbms lovelyUnit 4 Concurrency control.pptx dbms lovely
Unit 4 Concurrency control.pptx dbms lovelyPritishMajumdar3
 
Unit 4 Concurrency control.pptx dbms lovely
Unit 4 Concurrency control.pptx dbms lovelyUnit 4 Concurrency control.pptx dbms lovely
Unit 4 Concurrency control.pptx dbms lovelyPritishMajumdar3
 
UNIT 2- TRANSACTION CONCEPTS AND CONCURRENCY CONCEPTS (1).pdf
UNIT 2- TRANSACTION CONCEPTS AND CONCURRENCY CONCEPTS (1).pdfUNIT 2- TRANSACTION CONCEPTS AND CONCURRENCY CONCEPTS (1).pdf
UNIT 2- TRANSACTION CONCEPTS AND CONCURRENCY CONCEPTS (1).pdfKavitaShinde26
 
Concurrency Control, Recovery, Case Studies
Concurrency Control, Recovery, Case StudiesConcurrency Control, Recovery, Case Studies
Concurrency Control, Recovery, Case StudiesPrabu U
 
Transactions in dbms
Transactions in dbmsTransactions in dbms
Transactions in dbmsNancy Gulati
 
Unit 5 rdbms study_material
Unit 5  rdbms study_materialUnit 5  rdbms study_material
Unit 5 rdbms study_materialgayaramesh
 
Concurrency control
Concurrency controlConcurrency control
Concurrency controlJaya Jeswani
 

Similar to db unit 4 dbms protocols in transaction (20)

concurrency control
concurrency controlconcurrency control
concurrency control
 
Unit-IV_transaction.pptx
Unit-IV_transaction.pptxUnit-IV_transaction.pptx
Unit-IV_transaction.pptx
 
Concurrency Control Techniques
Concurrency Control TechniquesConcurrency Control Techniques
Concurrency Control Techniques
 
Chapter17
Chapter17Chapter17
Chapter17
 
3 concurrency controlone_v3
3 concurrency controlone_v33 concurrency controlone_v3
3 concurrency controlone_v3
 
Concurrency Control & Deadlock Handling
Concurrency Control & Deadlock HandlingConcurrency Control & Deadlock Handling
Concurrency Control & Deadlock Handling
 
UNIT-IV: Transaction Processing Concepts
UNIT-IV: Transaction Processing ConceptsUNIT-IV: Transaction Processing Concepts
UNIT-IV: Transaction Processing Concepts
 
DBMS Presentation.pptx
DBMS Presentation.pptxDBMS Presentation.pptx
DBMS Presentation.pptx
 
concurrency-control
concurrency-controlconcurrency-control
concurrency-control
 
unit06-dbms-new.ppt
unit06-dbms-new.pptunit06-dbms-new.ppt
unit06-dbms-new.ppt
 
Unit 4 Concurrency control.pptx dbms lovely
Unit 4 Concurrency control.pptx dbms lovelyUnit 4 Concurrency control.pptx dbms lovely
Unit 4 Concurrency control.pptx dbms lovely
 
Unit 4 Concurrency control.pptx dbms lovely
Unit 4 Concurrency control.pptx dbms lovelyUnit 4 Concurrency control.pptx dbms lovely
Unit 4 Concurrency control.pptx dbms lovely
 
Concurrency control
Concurrency control Concurrency control
Concurrency control
 
UNIT 2- TRANSACTION CONCEPTS AND CONCURRENCY CONCEPTS (1).pdf
UNIT 2- TRANSACTION CONCEPTS AND CONCURRENCY CONCEPTS (1).pdfUNIT 2- TRANSACTION CONCEPTS AND CONCURRENCY CONCEPTS (1).pdf
UNIT 2- TRANSACTION CONCEPTS AND CONCURRENCY CONCEPTS (1).pdf
 
Concurrency Control, Recovery, Case Studies
Concurrency Control, Recovery, Case StudiesConcurrency Control, Recovery, Case Studies
Concurrency Control, Recovery, Case Studies
 
Ch16
Ch16Ch16
Ch16
 
Transactions in dbms
Transactions in dbmsTransactions in dbms
Transactions in dbms
 
Unit 5 rdbms study_material
Unit 5  rdbms study_materialUnit 5  rdbms study_material
Unit 5 rdbms study_material
 
DBMS 4.pdf
DBMS 4.pdfDBMS 4.pdf
DBMS 4.pdf
 
Concurrency control
Concurrency controlConcurrency control
Concurrency control
 

Recently uploaded

EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxEPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxRaymartEstabillo3
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfsanyamsingh5019
 
Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionSafetyChain Software
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Educationpboyjonauth
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Krashi Coaching
 
Final demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptxFinal demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptxAvyJaneVismanos
 
Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17Celine George
 
Blooming Together_ Growing a Community Garden Worksheet.docx
Blooming Together_ Growing a Community Garden Worksheet.docxBlooming Together_ Growing a Community Garden Worksheet.docx
Blooming Together_ Growing a Community Garden Worksheet.docxUnboundStockton
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...Marc Dusseiller Dusjagr
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon AUnboundStockton
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptxVS Mahajan Coaching Centre
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformChameera Dedduwage
 
Biting mechanism of poisonous snakes.pdf
Biting mechanism of poisonous snakes.pdfBiting mechanism of poisonous snakes.pdf
Biting mechanism of poisonous snakes.pdfadityarao40181
 
How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17Celine George
 
Science lesson Moon for 4th quarter lesson
Science lesson Moon for 4th quarter lessonScience lesson Moon for 4th quarter lesson
Science lesson Moon for 4th quarter lessonJericReyAuditor
 
Hybridoma Technology ( Production , Purification , and Application )
Hybridoma Technology  ( Production , Purification , and Application  ) Hybridoma Technology  ( Production , Purification , and Application  )
Hybridoma Technology ( Production , Purification , and Application ) Sakshi Ghasle
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxiammrhaywood
 

Recently uploaded (20)

EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxEPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
 
9953330565 Low Rate Call Girls In Rohini Delhi NCR
9953330565 Low Rate Call Girls In Rohini  Delhi NCR9953330565 Low Rate Call Girls In Rohini  Delhi NCR
9953330565 Low Rate Call Girls In Rohini Delhi NCR
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdf
 
Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory Inspection
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Education
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
 
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
 
Final demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptxFinal demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptx
 
Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17
 
Blooming Together_ Growing a Community Garden Worksheet.docx
Blooming Together_ Growing a Community Garden Worksheet.docxBlooming Together_ Growing a Community Garden Worksheet.docx
Blooming Together_ Growing a Community Garden Worksheet.docx
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon A
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy Reform
 
Biting mechanism of poisonous snakes.pdf
Biting mechanism of poisonous snakes.pdfBiting mechanism of poisonous snakes.pdf
Biting mechanism of poisonous snakes.pdf
 
How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17
 
Science lesson Moon for 4th quarter lesson
Science lesson Moon for 4th quarter lessonScience lesson Moon for 4th quarter lesson
Science lesson Moon for 4th quarter lesson
 
Hybridoma Technology ( Production , Purification , and Application )
Hybridoma Technology  ( Production , Purification , and Application  ) Hybridoma Technology  ( Production , Purification , and Application  )
Hybridoma Technology ( Production , Purification , and Application )
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
 
Staff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSDStaff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSD
 

db unit 4 dbms protocols in transaction

  • 2. SCHEDULE ▶ A schedule (or history ) S of n transactions T1 , T2 , …, Tn is an ordering of the operations of the transactions, such that operations of Ti in S must appear in the same order in which they occur in Ti . ▶ For example, the schedule of T1 and T2 is ▶ S : r1(X); r2(X); w1(X); r1(Y); w2(X); w1(Y);
  • 3. ▶ Two operations in a schedule are conflict if:  They belong to different transactions,  They access the same item X, and  At least one of them is a WRITE_ITEM(X) operation. ▶ A schedule S of n transactions T 1 , T 2 , …, T n is said to be a complete schedule if:  The operations in S are exactly those operations in T 1 , T 2 , …, T n including a commit or abort operation as the last operation for each transaction.  The order of operations in S is the same as their occurrence in T i .  For any two conflict operations, one of the two must occur before the other in the schedule.
  • 4. Characterizing Schedules Based on Recoverability. ▶ We would like that, once a transaction T is committed, it should never be necessary to roll back T. The schedules that meet this criterion are called recoverable schedules . Therefore:  A schedule S is recoverable if no transaction T in S commits until all transactions T’ that have written an item that T reads have committed. For example  S’ a : r 1 (X); r 2 (X); w 1 (X); r 1 (Y); w 2 (X); c 2 ; w 1 (Y); c 1 ;  is recoverable, even though it suffers from the lost update problem.
  • 5. ▶ Example -- Consider the following schedules:  Sc : r1(X); w1(X); r2(X);r1(Y); w2(X); c2; a1 ;  Sd : r1(X);w1(X); r2(X);r1(Y); w2(X); w1(Y); c1; c2 ;  Se : r1(X); w1(X); r2(X);r1(Y); w2(X); w1(Y); a1 ; a2 ;  Sc is not recoverable , because T2 reads item X written by T1 , and then T2 commits before T1 commits.  Sd is recoverable , because T2 reads item X written by T1 , and then T2 commits after T1 commits and no other conflict operations exists in the schedule.  Se is similar to Sd , but T 1 is aborted (instead of commit).  In this situation T2 should also abort, because the value of X it read is no longer valid (this phenomenon known as cascading rollback or cascading abort ).
  • 6. ▶Because cascading rollback can be quite time-consuming, we perform cascade less schedules. ▶A schedule is said to be cascade less or to avoid cascading rollback if every transaction in the schedule reads only items that were written by committed transactions. ▶A more restrictive type of schedule is called strict schedule, in which transactions can neither read nor write an item X until the last transaction that wrote X has committed (or aborted)
  • 7. Characterizing Schedules Based on Serializability ▶ If no interleaving of operations is permitted, there are only two possible arrangements for executing transactions T1 and T2 : ▶Execute (in sequence) all the operations of transaction T1, followed by all the operations of transaction T2. ▶Execute (in sequence) all the operations of transaction T2, followed by all the operations of transaction T1. ▶ If interleaving of operations is allowed there will be many possible schedules. ▶ The concept of serializability of schedules is used to identify which schedules are correct.
  • 8. ▶ Examples of serial and non-serial schedules involving transactions T 1 and T 2 .  Serial schedule A: T1 followed by T2 .  Serial schedules B: T2 followed by T1 .
  • 9. (c) Two Non-serial schedules C and D with interleaving of operations.
  • 10. ▶A schedule S is serial , if for every transaction T participating in the schedule, all the operations of T are executed consecutively in the schedule; otherwise the schedule is called non-serial. ▶The drawback of serial schedules is that they limit concurrency of interleaving of operations. ▶Two schedules are called result equivalent if they produce the same final state of the database.
  • 11. ▶Example: Two schedules that are result equivalent for the initial value of X = 100, but are not result equivalent in general.
  • 12. ▶Two schedules are called Conflict equivalent if the order of any two conflicting operations is the same in both schedules. ▶A schedule S of n transactions is Serializable if it is equivalent to some serial schedule of the same n transactions. ▶A schedule S to be conflict serializable if it is conflict equivalent to some serial schedule S’.
  • 13. ▶ Algorithm for testing conflict serializability of S:  For each transaction Ti in schedule S, create a node,  If Tj executes a READ_ITEM(X) after Ti executes a WRITE_ITEM(X), create an edge Ti->Tj  If Tj executes a WRITE_ITEM(X) after Ti executes a READ_ITEM(X), create an edge Ti->Tj  If Tj executes a WRITE_ITEM(X) after Ti executes a WRITE_ITEM(X), create an edge Ti->Tj  The schedule S is serializable if and only if the precedence graph has no cycle.
  • 15. LOCK BASED PROTOCOLS ▶ A lock is a mechanism to control concurrent access to a data item Data items can be locked in two modes : 1. exclusive (X) mode. Data item can be both read as well as written. X-lock is requested using lock-X instruction. 2. shared (S) mode. Data item can only be read. S-lock is requested using lock-S instruction. ▶ Lock requests are made to concurrency-control manager. Transaction can proceed only after request is granted.
  • 16. Lock-Based Protocols (Cont.) ▶ A transaction may be granted a lock on an item if the requested lock is compatible with locks already held on the item by other transactions ▶ Any number of transactions can hold shared locks on an item, but if any transaction holds an exclusive on the item no other transaction may hold any lock on the item. ▶ If a lock cannot be granted, the requesting transaction is made to wait till all incompatible locks held by other transactions have been released. The lock is then granted. Lock-compatibility matrix
  • 17. Pitfal s of Lock-Based Protocols ▶ Consider the partial schedule Neither T3 nor T4 can make progress — executing lock-S(B) causes T4 to wait for T3 to release its lock on B, while executing lock-X(A) causes T3 to wait for T4 to release its lock on A. Such a situation is called a deadlock.  To handle a deadlock one of T3 or T4 must be rolled back and its locks released.
  • 18. Pitfalls of Lock-Based Protocols (Cont.) ▶ The potential for deadlock exists in most locking protocols. Deadlocks are a necessary evil. ▶ Starvation is also possible if concurrency control manager is badly designed. For example: 🢐 A transaction may be waiting for an X-lock on an item, while a sequence of other transactions request and are granted an S-lock on the same item. 🢐 The same transaction is repeatedly rolled back due to deadlocks. ▶ Concurrency control manager can be designed to prevent starvation
  • 19. The Two-Phase Locking Protocol ▶ This is a protocol which ensures conflict-serializable schedules. Phase 1: Growing Phase 🢐 transaction may obtain locks 🢐 transaction may not release locks ▶ Phase 2: Shrinking Phase 🢐 transaction may release locks 🢐 transaction may not obtain locks ▶ The protocol assures serializability. It can be proved that the transactions can be serialized in the order of their lock points (i.e. the point where a transaction acquired its final lock).
  • 20. The Two-Phase Locking Protocol (Cont.) ▶ Two-phase locking does not ensure freedom from deadlocks ▶ Cascading roll-back is possible under two-phase locking. To avoid this, follow a modified protocol called strict two-phase locking. Here a transaction must hold all its exclusive locks till it commits/aborts. ▶ Rigorous two-phase locking is even stricter: here all locks are held till commit/abort. In this protocol transactions can be serialized in the order in which they commit.
  • 21. The Two-Phase Locking Protocol (Cont.) ▶There can be conflict serializable schedules that cannot be obtained if two-phase locking is used. ▶However, in the absence of extra information (e.g., ordering of access to data), two-phase locking is needed for conflict serializability in the following sense: ▶Given a transaction Ti that does not follow two-phase locking, we can find a transaction Tj that uses two- phase locking, and a schedule for Ti and Tj that is not conflict serializable.
  • 22. Lock Conversions ▶ Two-phase locking with lock conversions:  First Phase:  can acquire a lock-S on item  can acquire a lock-X on item  can convert a lock-S to a lock-X (upgrade)  Second Phase:  can release a lock-S  can release a lock-X  can convert a lock-X to a lock-S (downgrade) ▶ This protocol assures serializability. But still relies on the programmer to insert the various locking instructions.
  • 23. Implementation of Locking ▶ A Lock manager can be implemented as a separate process to which transactions send lock and unlock requests ▶ The lock manager replies to a lock request by sending a lock grant messages (or a message asking the transaction to roll back, in case of a deadlock) ▶ The requesting transaction waits until its request is answered ▶ The lock manager maintains a data structure called a lock table to record granted locks and pending requests ▶ The lock table is usually implemented as an in-memory hash table indexed on the name of the data item being locked
  • 25. Timestamp-Based Protocols ▶ Each transaction is issued a timestamp when it enters the system. If an old transaction Ti has time-stamp TS(Ti), a new transaction Tj is assigned time-stamp TS(Tj) such that TS(Ti) <TS(Tj). ▶ The protocol manages concurrent execution such that the time-stamps determine the serializability order.
  • 26. Timestamp-Based Protocols ▶ In order to assure such behavior, the protocol maintains for each data Q two timestamp values:  W-timestamp(Q) is the largest time-stamp of any transaction that executed write(Q) successfully.  R-timestamp(Q) is the largest time-stamp of any transaction that executed read(Q) successfully.
  • 27. Timestamp-Based Protocols ▶ The timestamp ordering protocol ensures that any conflicting read and write operations are executed in timestamp order. ▶ Suppose a transaction Ti issues a read(Q) 1. If TS(Ti) <_W-timestamp(Q), then Ti needs to read a value of Q that was already overwritten. Hence, the read operation is rejected, and Ti is rolled back. 2. If TS(Ti) >_W-timestamp(Q), then the read operation is executed, and R-timestamp(Q) is set to the maximum of R- timestamp(Q) and TS(Ti).
  • 28. Timestamp-Based Protocols Suppose that transaction Ti issues write(Q). 1. If TS(Ti) < R-timestamp(Q), then the value of Q that Ti is producing was needed previously, and the system assumed that that value would never be produced. Hence, the write operation is rejected, and Ti is rolled back. 2. If TS(Ti) < W-timestamp(Q), then Ti is attempting to write an obsolete value of Q. Hence, this write operation is rejected, and Ti is rolled back. 3. Otherwise, the write operation is executed, and W- timestamp(Q) is set to TS(Ti).
  • 29. Timestamp-Based Protocols ▶ The timestamp-ordering protocol guarantees serializability since all the arcs in the precedence graph are of the form: ▶ Thus, there will be no cycles in the precedence graph ▶ Timestamp protocol ensures freedom from deadlock as no transaction ever waits. ▶ But the schedule may not be cascade-free, and may not even be recoverable
  • 30. Timestamp-Based Protocols ▶ Problem with timestamp-ordering protocol: ▶ Suppose Ti aborts, but Tj has read a data item written by Ti ▶ Then Tj must abort; if Tj had been allowed to commit earlier, the schedule is not recoverable . ▶ Further, any transaction that has read a data item written by Tj must abort ▶ This can lead to cascading rollback --- that is, a chain of rollbacks
  • 31. Timestamp-Based Protocols Solution: ▶ A transaction is structured such that its writes are all performed at the end of its processing ▶ All writes of a transaction form an atomic action; no transaction may execute while a transaction is being written. ▶ A transaction that aborts is restarted with a new timestamp.
  • 32.
  • 34. 34 Definition:-In optimistic concurrency control techniques, also known as validation or certification techniques, no checking is done while the transaction is executing. Also based on Timestamp Protocol. It has three phases: • Read Phase:- During this phase, the system executes transaction Ti. . It reads the values of the various data items and stores them in variable local to Ti. It performs all the write operations on temporary local variables without update of the actual database.
  • 35. 35 •Validation Phase:- Transaction Ti performs a validation test to determine whether it can copy to database the temporary local variables that hold the result of write operations without causing a violation of serializability. • Write Phase:- If Transaction Ti succeeds in validation, then the system applies the actual updates to the database, otherwise the system rolls back Ti.
  • 36. 36 To perform the validation test, we need to know when the various phases of transaction Ti took place. We shall therefore associate three different timestamps with transaction Ti. 1. Start (Ti): the time when Ti, started its execution. 2. Validation (Ti): the time when Ti finished its read phase and started its validation phase. 3. Finish (Ti): the time when Ti finished its write phase.
  • 37. 37 The Validation Test for Tj requires that, for all transaction Ti with TS(Ti ) < TS(Tj ) one of the following condition must hold:- • Finish (Ti) < Start (Tj): Since Ti completes its execution before Tj started, the serializability order is indeed maintained. • Start(Tj )<Finish(Ti ) <validation(Tj ): The validation phase of Tj should occur after Tifinishes.
  • 38. 38 Multiple Granularity • Multiple granularity locking (MGL) is a locking method used in database management systems (DBMS) and relational databases. In MGL, locks are set on objects that contain other objects. ... For example, a database may have files, which contain pages, which further contain records.
  • 39. 39 • Allow data items to be of various sizes and define a hierarchy of data granularities, where the small granularities are nested within larger ones • Can be represented graphically as a tree (but don't confuse with tree-locking protocol) • When a transaction locks a node in the tree explicitly, it implicitly locks all the node's descendents in the same mode.
  • 40. Granularity of locking (level in tree where locking is done): fine granularity (lower in tree): high concurrency, high locking overhead coarse granularity (higher in tree): low locking overhead, low concurrency 40
  • 41. Example of Granularity Hierarchy 41
  • 42. 42 The highest level in the above example hierarchy is the entire database. The levels below are of type area, file and record in that order. • Intention Lock Modes:-In addition to S and X lock modes, there are three additional lock modes with multiple granularity:  intention-shared (IS): indicates explicit locking at a lower level of the tree but only with shared locks.  intention-exclusive (IX): indicates explicit locking at a lower level with exclusive or shared locks  shared and intention-exclusive (SIX): the subtree rooted by that node is locked explicitly in shared mode and explicit locking is being done at a lower level with exclusive-mode locks. • intention locks allow a higher level node to be locked in S or X mode without having to check all descendent nodes.
  • 44. Data Management for Data Science Database Management Systems: transaction management and recovery management Maurizio Lenzerini, Riccardo Rosati Dipartimento di Ingegneria informatica automatica e gestionale Università di Roma “La Sapienza” 2015/2016
  • 45. SQL engine Access file manager Buffer manager Security and recovery manager Disk manager Data SQL commands DBMS Transaction manager DBMS transactions and recovery 45 Architecture of a DBMS
  • 46. 1 - Transaction management DBMS transactions and recovery 46 1. Transactions, concurrency, serializability 2. Recoverability 3. Concurrency control through locks 4. Concurrency control through timestamps 5. Transaction management in SQL
  • 47. 1 - Transaction management DBMS transactions and recovery 47 1. Transactions, concurrency, serializability 2. Recoverability 3. Concurrency control through locks 4. Concurrency control through timestamps 5. Transaction management in SQL
  • 48. Transactions DBMS transactions and recovery 48 A transaction models the execution of a software procedure constituted by a set of instructions that may ”read from” and “write on” a database, and that form a single logical unit. Syntactically, we will assume that every transaction contains: – one “begin” instruction – one “end” instruction – one among “commit” (confirm what you have done on the database so far) and “rollback” (undo what you have done on the database so far) As we will see, each transaction should enjoy a set of properties (called ACID)
  • 49. Example of “real” transaction DBMS transactions and recovery 49 begin writeln(’Inserire importo, conto di partenza, conto di arrivo’); read (Importo, contoPartenza, contoArrivo); EXEC SQL select Saldo into :saldoCorrente from ContiCorrenti where Numero = :contoPartenza if saldoCorrente < Importo then begin writeln(’Saldo Insufficiente’); ABORT; end; else begin EXEC SQL UPDATE ContiCorrenti set Saldo=:saldoCorrente - :Importo where Numero = :contoPartenza; writeln(‘Operazione eseguita con successo’); COMMIT; end; end; Numero Saldo Tabella ContiCorrenti
  • 50. Effect of a transaction DBMS transactions and recovery 50 Let DB be a database Let T be a transaction on DB Effect (or result) of T = state of DB after the execution of T As we shall see, every transaction must enjoy a set of properties (called ACID properties) that deal with the effect of the transaction
  • 51. Concurrency DBMS transactions and recovery 51 The throughput of a system is the number of transactions per second (tps) accepted by the system In a DBMS, we want the throughput to be approximately 100-1000tps This means that the system should support a high degree of concurrency among the transactions that are executed – Example: If each transaction needs 0.1 seconds in the average for its execution, then to get a throughput of 100tps, we must ensure that 10 transactions are executed concurrently in the average Typical applications: banks, flight reservations, …
  • 52. Concurrency: example Suppose that the same program is executed concurrently by two applications aiming at reserving a seat in the same flight The result is that we have two reservations for the same seat! 1. Find seat 2. 3. Book seat 4. The following temporal evolution is possible: Application 1 Application 2 Find seat Book seat time DBMS transactions and recovery 52
  • 53. Isolation of transactions DBMS transactions and recovery 53 The DBMS deals with this problem by ensuring the so-called “isolation” property for the transactions This property for a transaction essentially means that it is executed like it was the only one in the system, i.e., without concurrent transactions While isolation is essential, other properties are important as well
  • 54. Desirable properties of transactions DBMS transactions and recovery 54 The desirable properties in transaction management are called the ACID properties. They are: 1. Atomicity: for each transaction execution, either all or none of its actions are executed 2. Consistency: each transaction execution brings the database to a correct state 3. Isolation: each transaction execution is independent of any other concurrent transaction executions 4. Durability: if a transaction execution succeeds, then its effects are registered permanently in the database
  • 55. Schedules and serial schedules DBMS transactions and recovery 55 Given a set of transactions T1,T2,…,Tn, a sequence S of executions of actions of such transactions respecting the order within each transaction (i.e., such that if action a is before action b in Ti, then a is before b also in S) is called schedule on T1,T2,…,Tn, or simply schedule. A schedule on T1,T2,…,Tn that does not contain all the actions of all transactions T1,T2,…,Tn is called partial A schedule S is called serial if the actions of each transaction in S come before every action of a different transaction in S, i.e., if in S the actions of different transactions do not interleave.
  • 56. Serializability DBMS transactions and recovery 56 Example of serial schedules: Given T1 (x=x+x; x= x+2) and T2 (x= x**2; x=x+2), possible serial schedules on them are: Sequence 1: Sequence 2: x=x+x; x= x+2; x= x**2; x=x+2 x= x**2; x=x+2; x=x+x; x= x+2 Definition of serializable schedule: A schedule S is serializable if the outcome of its execution is the same as the outcome of at least one serial schedule constituted by the same transactions of S, no matter what the initial state of the database is.
  • 57. Serializability DBMS transactions and recovery 57 In other words, a schedule S on T1,T2,…,Tn is serializable if there exists a serial schedule on T1,T2,…,Tn that is “equivalent” to S But what does “equivalent” mean? Definition of equivalent schedules: Two schedules S1 and S2 are said to be equivalent if, for each database state D, the execution of S1 starting in the database state D produces the same outcome as the execution of S2 starting in the same database state D
  • 58. Notation A successful execution of transaction can be represented as a sequence of – Comands of type begin/commit – Actions that read and write an element (attribute, record, table) in the database – Actions that read and write an element in the local store T1 begin READ(A,t) t := t+l00 WRITE(A,t) READ(B,t) t := t+l00 WRITE(B,t) commit T2 begin READ(A,s) s := s*2 WRITE(A,s) READ(B,s) s := s*2 WRITE(B,s) commit DBMS transactions and recovery 58
  • 59. A serial schedule T1 begin READ(A,t) t := t+l00 WRITE(A,t) READ(B,t) t := t+l00 WRITE(B,t) commit T2 begin READ(A,s) s := s*2 WRITE(A,s) READ(B,s) s := s*2 WRITE(B,s) commit A 25 B 25 125 125 250 250 DBMS transactions and recovery 59
  • 60. A serializable schedule T1 begin READ(A,t) t := t+l00 WRITE(A,t) READ(B,t) t := t+l00 WRITE(B,t) commit T2 begin READ(A,s) s := s*2 WRITE(A,s) READ(B,s) s := s*2 WRITE(B,s) commit A 25 B 25 125 250 125 250 The final values of A and B are the same as the serial schedule T1, T2, no matter what the initial values of A and B. We can indeed show that, if initially A=B=c (c is a costant), then at the end of the execution of the schedule we have: A=B=2(c+100) DBMS transactions and recovery 60
  • 61. A non-serializable schedule T1 begin READ(A,t) t := t+l00 WRITE(A,t) READ(B,t) t := t+l00 WRITE(B,t) commit T2 begin READ(A,s) s := s*2 WRITE(A,s) READ(B,s) s := s*2 WRITE(B,s) commit A 25 B 25 125 250 50 150 Where is the problem?? DBMS transactions and recovery 61
  • 62. A non-serializable schedule T1 begin READ(A,t) t := t+l00 WRITE(A,t) READ(B,t) t := t+l00 WRITE(B,t) commit T2 begin READ(A,s) s := s*2 WRITE(A,s) READ(B,s) s := s*2 WRITE(B,s) A 25 B 25 125 250 50 150 Where is the problem?? DBMS transactions and recovery 62 commit
  • 63. Anomaly 1: reading temporary data (WR anomaly) begin READ(A,x) x := x-1 WRITE(A,x) READ(B,x) x:=x+1 WRITE(A,x) commit T1 T2 begin READ(A,x) x := x*2 WRITE(A,x) READ(B,x) x := x*2 WRITE(B,x) commit Note that the interleaved execution is different from any serial execution. The problem comes from the fact that the value of A written by T1 is read by T2 before T1 has completed all its changes. This is a WR (write-read) anomaly DBMS transactions and recovery 63
  • 64. Anomaly 2a: update loss (RW anomaly) begin READ(A,x) x := x+1 WRITE(A,x) commit • Let T1, T2 be two transactions, each of the form: READ(A, x), x := x + 1, WRITE(A, x) • The serial execution with initial value A=2 produces A=4, which is the result of two subsequent updates • Now, consider the following schedule: T1 T2 begin READ(A,x) x := x+1 WRITE(A,x) commit The final result is A=3, and the first update is lost: T2 reads the initial value of A, and writes the final value. In this case, the update executed by T1 is lost! DBMS transactions and recovery 64
  • 65. Anomaly 2a: update loss (RW anomaly) DBMS transactions and recovery 65 • This kind of anomaly is called RW anomaly (read-write anomaly), because it shows up when a transaction reads an element, and another transaction writes the same element. • Indeed, this anomaly comes from the fact that a transaction T2 could change the value of an object A that has been read by a transaction T1, while T1 is still in progress. The fact that T1 is still is progress means that the risk is that T1 works on A without taking into account the changes that T2 makes on A. Therefore, the update of T1 or T2 are lost.
  • 66. Anomaly 2b: unrepeateable read (RW anomaly) T1 executes two consecutive reads of the same data: T1 begin READ(A,x) READ(A,x) However, dc u oe mt m oit the concurrent update of T2, T1 reads two different values. This is another kind of RW (read-write) anomaly. T2 begin READ(A,x) x := x+1 WRITE(A,x) commit DBMS transactions and recovery 66
  • 67. Anomaly 3: ghost update (WW anomaly) Assume the following integrity constraint A = B begin WRITE(A,1) WRITE(B,1) commit T1 T2 begin WRITE(B,2) WRITE(A,2) commit Note that T1 and T2 in isolation do not violate the integrity constraints. However, the interleaved execution is different from any serial execution. Transaction T1 will see the update of A to 2 as a surprise, and transaction T2 will see the update of B to 1 as a surprise. This is a WW (write-write) anomaly DBMS transactions and recovery 67
  • 68. Scheduler The scheduler is part of the transaction manager, and works as follows: – It deals with new transactions entered into the system, assigning them an identifier – It instructs the buffer manager so as to read and write on the DB according to a particular sequence – It is NOT concerned with specific operations on the local store of transactions, nor with constraints on the order of executions of transactions. The last conditions means that every order by which transactions are entered into the system is acceptable to the schedule. It follows that we can simply characterize each transaction Ti (where i is a nonnegative integer identifying the transaction) in terms of its actions, where each action of transaction Ti is denoted by a letter (read, write, o commit) and the subscript i The transactions of the previous examples are written as: T1: r1(A) r1(B) w1(A) w1(B) c1 T2: r2(A) r2(B) w2(A) w2(B) c2 An example of (complete) schedule on these transactions is: r1(A) r1(B) w1(A) r2(A) r2(B) w2(A) w1(B) c1 w2(B) c2 T1 reads A T2 writes A T1 commit DBMS transactions and recovery 68
  • 69. Serializability and equivalence of schedules DBMS transactions and recovery 69 As we saw before, the definition of serializability relies on the notion of equivalence between schedules. Depending on the level of abstraction used to characterize the effects of transactions, we get different notions of equivalence, which in turn suggest different definitions of serializability. Given a certain definition of equivalence, we will be interested in • two types of algorithms: – algorithms for checking equivalence: given two schedule, determine if they are equivalent – algorithms for checking serializability: given one schedule, check whether it is equivalent to any of the serial schedules on the same transactions • rules that ensures serializability
  • 70. Two important assumptions DBMS transactions and recovery 70 1. No transaction reads or writes the same element twice 2. No transaction executes the “rollback” command (i.,e. all executions of transactions are successful)
  • 71. Classes of schedules Basic idea of our investigation: single out classes of schedules that are serializable, and such that the serializability check can be done with reasonable computational complexity Serial schedules All schedules Serializable schedules DBMS transactions and recovery 71
  • 72. Conflict-serializability: the notion of conflict DBMS transactions and recovery 72 Definition of conflicting actions: Two actions are conflicting in a schedule if they belong to different transactions, they operate on the same element, and at least one of them is a write. It is easy to see that: – Two consecutive nonconflicting actions belonging to different transactions can be swapped without changing the effects of the schedule. Indeed, • Two consecutive reads of the same elements in different transactions can be swapped • One read of X in T1 and a consecutive read of Y in T2 (with YX) can be swapped – The swap of two consecutive actions of the same transaction can change the effect of the transaction – Two conflicting consecutive actions cannot be swapped without changing the effects of the schedule, because: • Swapping two write operations w1(A) w2(A) on the same elements may result in a different final value for A • Swapping two consecutive operations such as r1(A) w2(A) may cause T1 read different values of A (before and after the write of T2, respectively)
  • 73. Conflict-equivalence DBMS transactions and recovery 73 Definition of conflict-equivalence: Two schedules S1 and S2 on the same transactions are conflict-equivalent if S1 can be transformed into S2 through a sequence of swaps of consecutive non-conflicting actions Example: S = r1(A) w1(A) r2(A) w2(A) r1(B) w1(B) r2(B) w2(B) is conflict-equivalent to: S’ = r1(A) w1(A) r1(B) w1(B) r2(A) w2(A) r2(B) w2(B) because it can be transformed into S’ through the following sequence of swaps: r1(A) w1(A) r2(A) w2(A) r1(B) w1(B) r2(B) w2(B) r1(A) w1(A) r2(A) r1(B) w2(A) w1(B) r2(B) w2(B) r1(A) w1(A) r1(B) r2(A) w2(A) w1(B) r2(B) w2(B) r1(A) w1(A) r1(B) r2(A) w1(B) w2(A) r2(B) w2(B) r1(A) w1(A) r1(B) w1(B) r2(A) w2(A) r2(B) w2(B)
  • 74. Exercise DBMS transactions and recovery 74 Prove the following property: Two schedules S1 and S2 on the same transactions T1,…,Tn are conflict- equivalent if and only if there are no actions ai of Ti and bj of Tj (with Ti and Tj belonging to T1,…Tn) such that - ai and bj are conflicting, and - the mutual position of the two actions in S1 is different from their mutual position in S2
  • 75. Conflict-serializability DBMS transactions and recovery 75 Definition of conflict-serializability: A schedule S is conflict- serializable if there exists a serial schedule S’ that is conflict- equivalent to S How can conflict-serializability be checked? We can do it by analyzing the precedence graph associated to a schedule. Given a schedule S on T1,…,Tn, the precedence graph P(S) associated to S is defined as follows: – the nodes of P(S) are the transactions {T1,…, Tn} of S – the edges E of P(S) are as follows: the edge Ti  Tj is in E if and only if there exists two actions Pi(A), Qj(A) of different transactions Ti and Tj in S operating on the same object A such that: (i.e., Pi(A) appears before Qj(A) in S) – Pi(A) <S Qj(A) – at least one between Pi(A) and Qj(A) is a write operation
  • 76. Example of precedence graph S: w3(A) w2(C) r1(A) w1(B) r1(C) w2(A) r4(A) w4(D) 3 1 2 4 DBMS transactions and recovery 76
  • 77. How the precedence graph is used DBMS transactions and recovery 77 Theorem (conflict-serializability) A schedule S is conflict- serializable if and only if the precedence graph P(S) associated to S is acyclic. Exercise: Prove that, if S is a serial schedule, then the precedence graph P(S) is acyclic.
  • 78. 1 - Transaction management DBMS transactions and recovery 78 1. Transactions, concurrency, serializability 2. Recoverability 3. Concurrency control through locks 4. Concurrency control through timestamps 5. Transaction management in SQL
  • 79. The rollback problem DBMS transactions and recovery 79 We now consider the problem of rollback. The first observation is that, with rollbacks, the notion of serializability that we have considered up to now is not sufficient for achieving the ACID properties. This fact is testified by the existence of a new anomaly, called “dirty read”.
  • 80. A new anomaly: dirty read (WR anomaly) DBMS transactions and recovery 80 Consider two transactions T1 and T2, both with the commands: READ(A,x), x:=x+1, WRITE(A,x) Now consider the following schedule (where T1 executes the rollback): T1 begin READ(A,x) x := x+1 WRITE(A,x) rollback T2 begin READ(A,x) x := x+1 WRITE(A,x) commit The problem is that T2 reads a value written by T1 before T1 commits or rollbacks. Therefore, T2 reads a “dirty” value, that is shown to be incorrect when the rollback of T1 is executed. The behavior of T2 depends on an incorrect input value. This is another form of WR (write- read) anomaly.
  • 81. Commit o rollback? DBMS transactions and recovery 81 Recall that, at the end of transaction Ti: • If Ti has executed the commit operation: – the system should ensure that the effects of the transactions are recorded permanently in the database • If Ti has executed the rollback operation: – the system should ensure that the transaction has no effect on the database
  • 82. Cascading rollback DBMS transactions and recovery 82 Note that the rollback of a transaction Ti can trigger the rollback of other transactions, in a cascading mode. In particular: – If a transaction Tj different from Ti has read from Ti, we should kill Tj (or, Tj should rollback) – If another transaction Th has read from Tj, Th should in turn rollback – and so on… This is called cascading rollback, and the task of the system is to avoid it.
  • 83. Recoverable schedules DBMS transactions and recovery 83 If in a schedule S, a transaction Ti that has read from Tj commits before Tj, the risk is that Tj then rollbacks, so that Ti leaves an effect on the database that depends on an operation (of Tj) that never existed. To capture this concept, we say that Ti is not recoverable. A schedule S is recoverable if no transaction in S commits before all other transactions it has “read from”, commit. Example of recoverable schedule: S: w1(A) w1(B) w2(A) r2(B) c1 c2 Example of non-recoverable schedule: S: w1(A) w1(B) w2(A) r2(B) r3(A) c1 c3 c2
  • 84. Serializability and recoverability Serializability and recoverability are two orthogonal concepts: there are recoverable schedules that are non-serializable, and serializable schedule that are not recoverable. Obviously, every serial schedule is recoverable. For example, the schedule S1: w2(A) w1(B) w1(A) r2(B) c1 c2 is recoverable, but not serializable (it is not conflict-serializable), whereas the schedule S2: w1(A) w1(B) w2(A) r2(B) c2 c1 is serializable (in particular, conflict-serializable), but not recoverable serializable schedule recoverable schedule serial schedule DBMS transactions and recovery 84
  • 85. Recoverability and cascading rollback DBMS transactions and recovery 85 Recoverable schedules can still suffer from the cascading rollback problem. For example, in this recoverable schedule S: w2(A) w1(B) w1(A) r2(B) if T1 rollbacks, T2 must be killed. To avoid cascading rollback, we need a stronger condition wrt recoverability: a schedule S avoids cascading rollback (i.e., the schedule is ACR, Avoid Cascading Rollback) if every transaction in S reads values that are written by transactions that have already committed. For example, this schedule is ACR S: w2(A) w1(B) w1(A) c1 r2(B) c2 In other words, an ACR schedule blocks the dirty data anomaly.
  • 86. Summing up DBMS transactions and recovery 86 • S is recoverable if no transaction in S commits before the commit of all the transactions it has “read from” Example: w1(A) w1(B) w2(A) r2(B) c1 c2 • S is ACR, i.e., avoids cascading rollback, if no transaction “reads from” a transaction that has not committed yet Example: w1(A) w1(B) w2(A) c1 r2(B) c2
  • 87. Recoverability and ACR recoverable schedule DBMS transactions and recovery 87 serial schedule ACR schedule serializable schedule Analogously to recoverable schedules, not all ACR schedules are serializable. Obviously, every ACR schedule is recoverable, and every serial schedule is ACR.
  • 88. Strict schedules DBMS transactions and recovery 88 • We say that, in a schedule S, a transaction Ti writes on Tj if there is a wj(A) in S followed by wi(A), and there is no write action on A in S between these two actions • We say that a schedule S is strict if every transaction reads only values written by transactions that have already committed, and writes only on transactions that have already committed • It is easy to verify that every strict schedule is ACR, and therefore recoverable • Note that, for a strict schedule, when a transaction Ti rollbacks, it is immediate to determine which are the values that have to be stored back in the database to reflect the rollback of Ti, because no transaction may have written on this values after Ti
  • 89. Strict schedules and ACR recoverable schedule serializable schedule Obviously, every serial schedule is strict, and every strict schedule is ACR, and therefore recoverable. However, not all ACR schedules are strict. ACR schedule serial schedule strict schedule DBMS transactions and recovery 89
  • 90. 1 - Transaction management DBMS transactions and recovery 90 1. Transactions, concurrency, serializability 2. Recoverability 3. Concurrency control through locks 4. Concurrency control through timestamps 5. Transaction management in SQL
  • 91. Concurrency control through locks DBMS transactions and recovery 91 • Conflict-serializability is not used in commercial systems • We will now study a method for concurrency control that is used in commercial systems. Such method is based on the use of lock • In the methods based on locks, a transaction must ask and get a permission in order to operate on an element of the database. The lock is a mechanism for a transaction to ask and get such a permission
  • 92. Primitives for exclusive lock DBMS transactions and recovery 92 • For the moment, we will consider exclusive locks. Later on, we will take into account more general types of locks • We introduce two new operations (besides read and write) that can appear in transactions. Such operations are used to request and release the exclusive use of a resource (element A in the database): – Lock (exclusive): – Unlock: li(A) ui(A) • The lock operation li(A) means that transaction Ti requests the exclusive use of element A of the database • The unlock operation ui(A) means that transaction Ti releases the lock on A, i.e., it renounces the use of A
  • 93. Well-formed transactions and legal schedules When using exclusive locks, transactions and schedules should obey two rules: – Rule 1: Every transaction is well-formed. A transaction Ti is well-formed if every action pi(A) (a read or a write on A) of Ti is contained in a “critical section”, i.e., in a sequence of actions delimited by a pair of lock-unlock on A: Ti: … li(A) … pi(A) … ui(A) ... – Rule 2: The schedule is legal. A schedule S with locks is legal if no transaction in it locks an element A when a different transaction has granted the lock on A and has not yet unlocked A S: ……li(A) ………………... ui(A) …… no lj(A) DBMS transactions and recovery 93
  • 94. Schedule with exclusive locks: examples T1 ill-formed: write without lock. T2 ill- formed: lock without unlock. S2 not legal S1: l1(A) l1(B) r1(A) w1(B) l2(B) u1(A) u1(B) r2(B) w2(B) u2(B) l3(B) r3(B) u3(B) T1 well-formed, S1 not legal S2: l1(A) r1(A) w1(B) u1(A) u1(B) l2(B) r2(B) w2(B) l3(B) r3(B) u3(B) S3: l1(A) r1(A) u1(A) l1(B) w1(B) u1(B) l2(B) r2(B) w2(B) u2(B) l3(B) r3(B) u3(B) T1, T2, T3 well-formed, and S3 legal DBMS transactions and recovery 94
  • 95. Scheduler based on exclusive locks DBMS transactions and recovery 95 A scheduler based on exclusive locks behaves as follows: 1. When an action request is issued by a transaction, the scheduler checks whether this request makes the transaction ill-formed, in which case the transaction is aborted by the scheduler. 2. When a lock request on A is issued by transaction Ti, while another transaction Tj has a lock on A, the scheduler does not grant the request (otherwise the schedule would become illegal), and Ti is blocked until Tj releases the lock on A. 3. To trace all the locks granted, the scheduler manages a table of locks, called lock table In other words, the scheduler ensures that the current schedule is legal and all its transactions are well-formed.
  • 96. T2 T1 l1(A); r1(A) A:=A+100; w1(A); l1(B); r1(B); u1(A); B:=B+100; w1(B); u1(B) l2(A) – blocked! l2(A) – re-started! r2(A) A:=Ax2; w2(A); u2(A) l2(B); r2(B) B:=Bx2; w2(B); u2(B) Example of scheduler behaviour DBMS transactions and recovery 96
  • 97. T1 T2 l1(A); r1(A) A:=A+100; w1(A); u1(A) 125 250 l2(A); r2(A) A:=Ax2; w2(A); u2(A) l2(B); r2(B) B:=Bx2; w2(B); u2(B) 50 l1(B); r1(B) B:=B+100; w1(B); u1(B) 150 250 150 Ghost update: isolation is not ensured by the use of locks DBMS transactions and recovery 97 Is this sufficient for serializability? A B 25 25
  • 98. We have seen that the two rules for - well-formed transactions - legal schedules are not sufficient for guaranteeing serializability To come up with a correct policy for concurrency control through the use of exclusive locks, we need a further rule (or, protocol), called “Two-Phase Locking (2PL)”: Definition of two-phase locking (with only exclusive locks):A schedule S with exclusive locks follows the two-phase locking protocol if in each transaction Ti appearing in S, all lock operations precede all unlock operations. S: ……. li(A) …… ui(A) …… no unlock no lock DBMS transactions and recovery 98 Two-Phase Locking (with exclusive locks)
  • 99. Growing Phase DBMS transactions and recovery 99 Shrinking Phase Time # lock granted to Ti The two phases of Two-Phase Locking Locking and unlocking scheme in a transaction following the 2PL protocol
  • 100. T1 T2 l1(A); r1(A) A:=A+100; w1(A); u1(A) 125 250 l2(A); r2(A) A:=Ax2; w2(A); u2(A) l2(B); r2(B) B:=Bx2; w2(B); u2(B) 50 l1(B); r1(B) B:=B+100; w1(B); u1(B) 150 250 150 Example of a 2PL schedule A B 25 25 DBMS transactions and recovery 100
  • 101. l1(A); r1(A) A:=A+100; w1(A) l1(B) u1(A) r1(B) B:=B+100 w1(B); u1(B) l2(A); r2(A) A:=Ax2; w2(A); l2(B) – blocked l2(B); - re-started u2(A); r2(B) B:=Bx2; w2(B); u2(B) T1 T2 How the scheduler works in the 2PL protocol The 2PL protocol avoids the ghost update while accepting concurrency Note that the scheduler still checks that the schedule is legal DBMS transactions and recovery 101
  • 102. l1(A); r1(A) A:=A+100; w1(A) l1(B) – blocked l2(B); r2(B) B:=Bx2 w2(B) l2(A) – blocked T1 T2 The risk of deadlock DBMS transactions and recovery 102 S: l1(A) r1(A) l2(B) r2(B) w1(A) w2(B) l1(B) l2(A) To ensure that the schedule is legal, the scheduler blocks both T1 and T2, and none of the two transactions can proceed. This is a deadlock (we will come back to the methods for deadlock management).
  • 103. Who issues the lock/unlock commands? DBMS transactions and recovery 103 So far, we have assumed that transactions issue the lock/unlock commands. However, this is not necessary. Indeed, we can design a scheduler in such a way that it inserts the lock/unlock commands while respecting the following conditions: - Every transaction is well-formed - The schedule is legal (if at all possible) - Each transaction, extended with the inserted lock/unclock commands, follows the 2PL protocol For this reason, even in the presence of locks, we will continue to denote a schedule by means of a sequence of read/write/commit commands. For example, the schedule l1(A) r1(A) l1(B) u1(A) l2(A) w2(A) r1(B) w1(B) u1(B) l2(B) u2(A) r2(B) w2(B) u2(B) can be denoted as: r1(A) w2(A) r1(B) w1(B) r2(B) w2(B)
  • 104. Scheduler based on exclusive locks and 2PL DBMS transactions and recovery 104 We study how a scheduler based on exclusive locks and 2PL behaves during the analysis of the current schedule (obviously, not necessarily complete): 1. If a request by transaction Ti shows that Ti is not well-formed, then Ti is aborted by the scheduler 2. If a lock request by transaction Ti shows that Ti does not follow the 2PL protocol, then Ti is aborted by the scheduler 3. If a lock is requested for A by transaction Ti while A is used by a different transaction Tj, then the scheduler blocks Ti, until Tj releases the lock on A. If the scheduler figures out that a deadlock has occurred (or will occur), then the scheduler adopts a method for deadlock management 4. To trace all the locks granted, the scheduler manages a table of locks, called lock table Note that (1) and (2) do not occur if the lock/unlock commands are automatically insterted by the scheduler. Simply put, the above behaviour means that the scheduler ensures that 1. the current schedule is legal 2. all its transactions are well-formed 3. all its transactions follow the 2PL protocol
  • 105. 2PL and conflict-serializability DBMS transactions and recovery 105 To compare 2PL and conflict-serializability, we make use of the above observation, and note that every schedule that includes lock/unlock operations can be seen as a “traditional” schedule (by simply ignoring such operations) Theorem Every legal schedule constituted by well-formed transactions following the 2PL protocol (with exclusive locks) is conflict-serializable.
  • 106. 2PL and conflict-serializability DBMS transactions and recovery 106 Theorem There exists a conflict-serializable schedule that does not follow the 2PL protocol (with exclusive locks). Proof It is sufficient to consider the following schedule S: r1(x) w1(x) r2(x) w2(x) r3(y) w1(y) S is obviously conflict-serializable (the serial schedule T3,T1,T2 is conflict-equivalent to S), but it is easy to show that we cannot insert in S the lock/unlock commands in such a way that all transactions are well-formed and follow the 2PL protocol, and the resulting schedule is legal. Indeed, it suffices to notice that we should insert in S the command u1(x) before r2(x), because in order for T2 to read x it must hold the exclusive lock on x, and we should insert in S the command l1(y) after r3(y), because in order for T3 to read y it must hold the exclusive lock on y, and therefore, the command l1(y), which is necessary for executing w3(y), cannot be issued before r3(y). It follows that we cannot insert into S the lock/unlock commands in such a way that the 2PL protocol is respected.
  • 107. Shared locks DBMS transactions and recovery 107 With exclusive locks, a transaction reading A must unlock A before another transaction can read the same element A: S: ... l1(A) r1(A) u1(A) … l2(A) r2(A) u2(A) … Actually, this looks too restrictive, because the two read operations do not create any conflict. To remedy this situation, we introduce a new type of lock: the shared lock. We denote by sli(A) the command for the transaction Ti to ask for a shared lock on A. With the use of shared locks, the above example changes as follows: S: ... sl1(A) r1(A) sl2(A) r2(A) …. u1(A) u2(A) The primitive for locks are now as follows: xli(A): exclusive lock (also called write lock) sli(A): shared lock (also called read lock) ui(A): unlock
  • 108. Well-formed transactions with shared locks DBMS transactions and recovery 108 With shared and exclusive locks, the following rule must be respected. Rule 1: We say that a transaction Ti is well-formed if – every read ri(A) is preceded either by sli(A) or by xli(A), with no ui(A) in between, – every wi(A) is preceded by xli(A) with no ui(A) in between, – every lock (sl or xl) on A by Ti is followed by an unlock on A by Ti. Note that we allow Ti to first execute sli(A), probably for reading A, and then to execute xli(A), probably for writing A without the unlock of A by means of T. The transition from a shared lock on A by T to an exclusive lock on the same element A by T (without an unlock on A by T) is called “lock upgrade”.
  • 109. Legal schedule with shared locks DBMS transactions and recovery 109 With shared and exclusive locks, the following rule must also be respected. Rule 2: We say that a schedule S is legal if – an xli(A) is not followed by any xlj(A) or by any slj(A) (with j different from i) without an ui(A) in between – an sli(A) is not followed by any xlj(A) (with j different from i) without an ui(A) in between
  • 110. Two-phase locking (with shared locks) DBMS transactions and recovery 110 With shared locks, the two-phase locking rule becomes: Definition of two-phase locking (with exclusive and shared locks): A schedule S (with shared and exclusive locks) follows the 2PL protocol if in every transaction Ti of S, all lock operations (either for exclusive or for shared locks) precede all unlocking operations of Ti. In other words, no action sli(X) or xli(X) can be preceded by an operation of type ui(Y) in the schedule.
  • 111. How locks are managed DBMS transactions and recovery 111 S X S yes no X no no Lock already granted to Ti on A • The scheduler uses the so-called “compatibility matrix” (see below) for deciding whether a lock request should be granted or not. • In the matrix, “S” stands for shared lock, “X” stands for exclusive lock, “yes” stands for “requested granted” and “no” stands for “requested not granted” New lock requested by Tj  Ti on A
  • 112. How locks are managed DBMS transactions and recovery 112 • The problem for the scheduler of automatically inserting the lock/unlock commands becomes more complex in the presence of shared locks. • Also, the execution of the unlock commands requires more work. Indeed, when an unlock command on A is issued by Ti, there may be several transactions waiting for a lock (either shared on exclusive) on A, and the scheduler must decide to which transaction to grant the lock. Several methods are possible: • First-come-first-served • Give priorities to the transactions asking for a shared lock • Give priorities to the transactions asking for a lock upgrade The first method is the most used one, because it avoids “starvation”, i.e., the situation where a request of a transaction is never granted.
  • 113. Exercise 7 DBMS transactions and recovery 113 Consider the following schedule S: r1(A) r2(A) r2(B) w1(A) w2(D) r3(C) r1(C) w3(B) c2 r4(A) c1 c4 c3 and tell whether S is in the class of 2PL schedules with shared and exclusive locks
  • 114. Exercise 7: solution DBMS transactions and recovery 114 The schedule S: r1(A) r2(A) r2(B) w1(A) w2(D) r3(C) r1(C) w3(B) c2 r4(A) c1 c4 c3 is in the class of 2PL schedules with shared and exclusive locks. This can be shown as follows: sl1(A) r1(A) sl2(A) r2(A) sl2(B) r2(B) xl2(D) u2(A) xl1(A) w1(A) w2(D) sl3(C) r3(C) sl1(C) r1(C) u1(C) u1(A) u2(B) u2(D) xl3(B) w3(B) u3(B) u3(C) c2 sl4(A) r4(A) u4(A) c1 c4 c3
  • 115. Properties of two-phase locking (with shared locks) DBMS transactions and recovery 115 The properties of two-phase locking with shared and exclusive locks are similar to the case of exclusive locks only: • Theorem Every legal schedule with well-formed transactions following the two-phase locking protocol (with exclusive and shared locks) is conflict- serializable. • Theorem There exists a conflict-serializable schedule that does not follow the 2PL protocol (with exclusive and shared locks). • With shared locks, the risk of deadlock is still present, like in: sl1(A) sl2(A) xl1(A) xl2(A)
  • 116. 2PL and conflict-serializability We denote by “2PL schedule” the class of legal schedules with shared and exclusive locks constituted by well-formed transactions following the 2PL protocol. schedule serializable schedule DBMS transactions and recovery 116 conflict-serializable schedule 2PL schedule serial schedule 2PL schedule with exclusive locks
  • 117. Recoverability and 2PL DBMS transactions and recovery 117 • So far, when discussing about recoverability, ACR, strictness and rigorousness we focused on: – read, write – rollback – commit • We still have to study the impact of these notions on the locking mechanisms and the 2PL protocol
  • 118. Strict two-phase locking (strict 2PL) A schedule S is said to be in the strict 2PL class if •S is in 2PL, and •S is strict. Tj wj(A) …… commit uj(A) ri(A) Ti DBMS transactions and recovery 118
  • 119. Strict two-phase locking (strict 2PL) With the goal of capturing the class of strict 2PL the following protocol has been defined: A schedule S follows the strict 2PL protocol if it follows the 2PL protocol, and all exclusive locks of every transaction T are kept by T until either T commits or rollbacks. Tj Ti wj(A) rj(B) …… uj(B) commit uj(A) ri(A) DBMS transactions and recovery 119
  • 120. Properties of strict 2PL DBMS transactions and recovery 120 • Every schedule following the strict 2PL protocol is strict: (See exercise 7) • Every schedule following the strict 2PL protocol is serializable: it can be shown that every strict 2PL schedule S is conflict- equivalent to the serial schedule S’ obtained from S by ignoring the transactions that have rollbacked, and by choosing the order of transactions determined by the order of commit (the first transaction in S’ is the first that has committed, the second transaction in S’ is the second that has committed, and so on)
  • 121. Exercise 8 DBMS transactions and recovery 121 • Prove or disprove the following statement: Every schedule following the strict 2PL protocol is strict. • Prove or disprove the following statement: Every schedule that is strict and follows the 2PL protocol also follows the strict 2PL protocol.
  • 122. The complete picture schedule serializable conflict-serializable 2PL ACR strict serial strict 2PL DBMS transactions and recovery 122
  • 123. 1 - Transaction management DBMS transactions and recovery 123 1. Transactions, concurrency, serializability 2. Recoverability 3. Concurrency control through locks 4. Concurrency control through timestamps 5. Transaction management in SQL
  • 124. Concurrency based on timestamps DBMS transactions and recovery 124 • Each transaction T has an associated timestamp ts(T) that is unique among the active transactions, and is such that ts(Tj) < ts(Th) whenever transaction Ti arrives at the scheduler before transaction Th. In what follows, we assume that the timestamp of transaction Ti is simply i: ts(Ti)=i. • Note that the timestamps actually define a total order on transactions, in the sense that they can be considered ordered according to the order in which they arrive at the scheduler. • Note also that every schedule respecting the timestamp order is conflict- serializable, because it is conflict-equivalent to the serial schedule corresponding to the timestamp order. • Obviously, the use of timestamp avoids the use of locks. Note, however, that deadlock may still occur.
  • 125. The use of timestamp DBMS transactions and recovery 125 • Transactions execute without any need of protocols. • The basic idea is that, at each action execution, the scheduler checks whether the involved timestamps violates the serializability condition according to the order induced by the timestamps. • In particular, we maintain the following data for each element X: – rts(X): the highest timestamp among the active transactions that have read X – wts(X): the highest timestamp among the active transactions that have written X (this coincides with the timestamp of the last transaction that wrote X) – wts-c(X): the timestamp of the last committed transaction that has written X – cb(X): a bit (called commit-bit), that is false if the last transaction that wrote X has not committed yet, and true otherwise.
  • 126. The rules for timestamps DBMS transactions and recovery 126 • Basic idea: – the actions of transaction T in a schedule S must be considered as being logically executed in one spot – the logical time of an action of T is the timestamp of T, i.e., ts(T) – the commit-bit is used to avoid the dirty read anomaly • The system manages two “temporal axes”, corresponding to the “physical” and to the “logical” time. The values rts(X) and wts(X) indicate the timestamp of the transaction that was the last to read and write X according to the logical time. • An action of transaction T executed at the physical time t is accepted if its ordering according to the physical temporal order is compatible with respect to the logical time ts(T) • This “compatibility principle” is checked by the scheduler. • As we said before, we assume that the timestamp of each transaction Ti coincide with the subscript i: ts(Ti)=i. In what follows, t1,…,tn will denote physical times.
  • 127. Rules – case 1a (read ok) Case 1.a B(T1) B(T2) B(T3) w1(X) r3(X) r2(X) t1 t2 t3 t4 t5 t6 Consider r2(X) with respect to the last write on X, namely w1(X): – the physical time of r2(X) is t6, that is greater than the physical time of w1 (t4) – the logical time of r2(X) is ts(T2), that is greater than the logical time of w1(X), which is wts(X) = ts(T1) We conclude that there is no incompatibility between the physical and the logical time, and therefore we proceed as follows: 1. if cb(X) is true, then • generally speaking, after a read on X of T, rts(X) should be set to the maximum between rts(X) and ts(T) – in the example, although, according to the physical time, r2(X) appears after the last read r3(X) on X, it logically precedes r3(X), and therefore, if cb(X) was true, rts(X) would remain equal to ts(T3) • r2(X) is executed, and the schedule goes on 2. if cb(X) is false (as in the example), then T2 is put in a state waiting for the commit or the rollback of the transaction T’ that was the last to write X (i.e., a state waiting for cb(X) equal true -- indeed, cb(X) is set to true both when T’ commits, and when T’ rollbacks, because the transactions T’’ that was the last to write X before T’ obviously committed, otherwise T’ would be still blocked) DBMS transactions and recovery 127
  • 128. Rules – case 1b (read too late) Case 1.b B(T1) B(T2) w2(X) r1(X) t1 t2 t3 t4 Consider r1(X) with respect to the last write on X, namely w2(X): – the physical time of r1(X) is t4, that is greater than the physical time of w2(X), that is t3 – the logical time of r1(X) is ts(T1), that is less than the logical time of w2(X), i.e., wts(X) = ts(T2) We conclude that r1(X) and w2(X) are incompatible. Action r1(X) of T1 cannot be executed, T1 rollbacks, and a new execution of T1 starts, with a new timestamp. DBMS transactions and recovery 128
  • 129. Rules – case 2a (write ok) Consider w3(X) with respect to the last read on X (r1(X)) and the last write on X (w2(X)): – the physical time of w3(X) is greater than that of r1(X) and w2(X) – the logical time of w3(X) is greater than that of r1(X) and w2(X) We can conclude that there is no incompatibility. Therefore: 1. if cb(X) is true or no active transaction wrote X, then 2. else – we set wts(X) to ts(T3) – we set cb(X) to false – action w3(X) of T3 is executed, and the schedule goes on T3 is put in a state waiting for the commit or the rollback of the transaction T’ that was the last to write X (i.e., a state waiting for cb(X) equal true -- indeed, cb(X) is set to true both when T’ commits, and when T’ rollbacks, because the transactions T’’ that was the last to write X before T’ obviously committed, otherwise T’ would be still blocked) Case 2.a DBMS transactions and recovery 129 r1(X) w2(X) w3(X) t4 t5 t6 B(T1) B(T2) B(T3) t1 t2 t3
  • 130. Rules – case 2b (Thomas rule) • Consider w1(X) with respect to the last read r1(X) on X: the physical time of w1(X) is greater than the physical time of r1(X), and, since w1(X) and r1(X) belong to the same transaction, there is no incompatibility with respect to the logical time. • However, on the logical time dimension, w2(X) comes after the write w1(X), and therefore, the execution of w1(X) would correspond to an update loss. Therefore: 1. If cb(X) is true, we simply ignore w1(X) (i.e., w1(X) is not executed). In this way, the effect is to correctly overwrite the value written by T1 on X with the value written by T2 on X (it is like pretending that w1(X) came before w2(X) 2. if cb(X) is false, we let T1 waiting either for the commit or for the rollback of the transaction that was the last to write X (i.e., a state waiting for cb(X) equal true -- indeed, cb(X) is set to true both when T’ commits, and when T’ rollbacks, because the transactions T’’ that was the last to write X before T’ obviously committed, otherwise T’ would be still blocked) Case 2.b DBMS transactions and recovery 130 B(T1) B(T2) t1 t2 r1(X) w2(X) …… w1(X) t4 t5 …… t6 B(T3) t3
  • 131. Rules – case 2c (write too late) Case 2.c B(T1) B(T2) r2(X) w1(X) t1 t2 t3 t4 Consider w1(X) with respect to the last read r2(X) on X: – the physical time of w1(X) is t4, that is greater than the physical time of r2(X), i.e., t3 – the logical time of w1(X) is ts(T1), that is less than the logical time of r2(X), that is rts(X) = ts(T2) We conclude that w1(X) and r2(X) are incompatible. DBMS transactions and recovery 131 Action w1(X) is not executed, T1 is aborted, and is executed again with a new timestamp.
  • 132. Timestamp-based method: the scheduler DBMS transactions and recovery 132 Action ri(X): if then ts(Ti) >= wts(X) if cb(X)=true or ts(Ti) = wts(X) // (case 1.a) then set rts(X) = max(ts(Ti), rts(X)) and execute ri(X) else put Ti in “waiting” for the commit or the rollback of the last transaction that wrote X // (case 1.a.1) // (case 1.a.2) else rollback(Ti) // (case 1.b) Action wi(X): if ts(Ti) >= rts(X) and ts(Ti) >= wts(X) then if cb(X) = true then set wts(X) = ts(Ti), cb(X) = false, and execute wi(X) else put Ti in “waiting” for the commit or the rollback of the last transaction that wrote X // (case 2.a.1) // (case 2.a.2) else if ts(Ti) >= rts(X) and ts(Ti) < wts(X) then if cb(X)=true then ignore wi(X) else put Ti in “waiting” for the commit or the // (case 2.b) // (case 2.b.1) rollback of the last transaction that wrote X // (case 2.b.2) else rollback(Ti) // (case 2.c)
  • 133. Timestamp-based method: the scheduler DBMS transactions and recovery 133 When Ti executes ci: for each element X written by Ti, set cb(X) = true for each transaction Tj waiting for cb(X)=true or for the rollback of the transaction that was the last to write X, allow Tj to proceed choose the transaction that proceeds When Ti executes the rollback bi: for each element X written by Ti, set wts(X) to be wts-c(X), i.e., the timestamp of the transaction Tj that wrote X before Ti, and set cb(X) to true (indeed, Tj has surely committed) for each transaction Tj waiting for cb(X)=true or for the rollback of the transaction that was the last to write X allow Tj to proceed choose the transaction that proceeds
  • 134. Deadlock with the timestamps DBMS transactions and recovery 134 Unfortunately, the method based on timestamps does not avoid the risk of deadlock (although the probability is lower than in the case of locks). The deadlock is related to the use of the commit-bit. Consider the following example: w1(B), w2(A), w1(A), r2(B) When executing w1(A), T1 is put in waiting for the commit or the rollback of T2. When executing r2(B), T2 is put in waiting for the commit or the rollback of T1. The deadlock problem in the method based on timestamps is handled with the same techniques used in the 2PL method.
  • 135. The method based on timestamp: example DBMS transactions and recovery 135 Action Effect New values r6(A) ok rts(A) = 6 r8(A) ok rts(A) = 8 r9(A) ok rts(A) = 9 w8(A) no T8 aborted w11(A) ok wts(A) = 11 r10(A) no T10 aborted c11 ok cb(A) = true
  • 136. Timestamps and conflict-serializability DBMS transactions and recovery 136 • There are conflict-serializable schedules that are not accepted by the timestamp- based scheduler, such as: r1(Y) r2(X) w1(X) • If the schedule S is accepted by the timestamp-based scheduler and does not use the Thomas rule, then the schedule obtained from S by removing all actions of rollbacked transactions is conflict-serializable • If the schedule S is accepted by the timestamp-based scheduler and does use the Thomas rule, then S may be non conflict-serializable, like for example: r1(A) w2(A) c2 w1(A) c1 However, if the schedule S is accepted by the timestamp-based scheduler and does use the Thomas rule, then the schedule obtained from S by removing all actions ignored by the Thomas rules and all actions of rollbacked transactions is conflict-serializable
  • 137. Comparison between timestamps and 2PL DBMS transactions and recovery 137 • There are schedules that are accepted by timestamp- based schedulers that are not 2PL, such as r1(A) w2(A) r3(A) r1(B) w2(B) r1(C) w3(C) r4(C) w4(B) w5(B) (that is not 2PL because T2 must release the lock on A before asking for the lock on B) • Obviously, there are schedules that are accepted by the timestamp-based schedulers and are also strict 2PL schedules, such as the serial schedule: r1(A) w1(A) r2(A) w2(A) • There are strong strict 2PL schedules that are not accepted by the timestamp-based scheduler, such as: r1(B) r2(A) w2(A) r1(A) w1(A)
  • 138. Comparison between timestamps and 2PL DBMS transactions and recovery 138 • Waiting stage – 2PL: transactions are put in waiting stage – TS: transactions are killed and re-started • Serialization order – 2PL: determined by conflicts – TS: determined by timestamps • Need to wait for commit by other transactions – 2PL: solved by the strong strict 2PL protocol – TS: buffering of write actions (waiting for cb(X) = true) • Deadlock – 2PL: risk of deadlock – TS: deadlock is less probable
  • 139. Comparison between timestamps and 2PL DBMS transactions and recovery 139 • Timestamp-based method is superior when transactions are “read- only”, or when concurrent transactions rarely write the same elements • 2PL is superior when the number of conflicts is high because: – although locking may delay transactions and may cause deadlock (and therefore rollback), – the probability of rollback is higher in the case of the timestamp- based method, and this causes a greater global delay of the system • In the following picture, the set indicated by “timestamp” denotes the set of schedules generated by the timestamp-based scheduler, where all actions ignored by the Thomas rule and all actions of rollbacked transactions are removed
  • 140. Multiversion timestamp DBMS transactions and recovery 140 Idea: do not block the read actions! This is done by introducing different versions X1 … Xn of element X, so that every read can be always executed, provided that the “right” version (according to the logical time determined by the timestamp) is chosen – Every “legal” write wi(X) generates a new version Xi (in our notation, the subscript corresponds to the timestamp of the transaction that generated X) – To each version Xh of X, the timestamp wts(Xh)=ts(Th) is associated, denoting the ts of the transaction that wrote that version – To each version Xh of X, the timestamp rts(Xh)=ts(Ti) is associated, denoting the highest ts among those of the transactions that read Xh The properties of the multiversion timestamp are similar to those of the timestamp method.
  • 141. New rules for the use of timestamps DBMS transactions and recovery 141 The scheduler uses timestamps as follows: – when executing wi(X): if a read rj(Xk) such that wts(Xk) < ts(Ti) < ts(Tj) already occurred, then the write is refused (it is a “write too late” case, because transaction Tj, that is older than Ti, has already read a version of X that precedes version Xi), otherwise the write is executed on a new version Xi of X, and we set wts(Xi) = ts(Ti). – ri(X): the read is executed on the version Xj such that wts(Xj) is the highest write timestamp among the versions of X having a write timestamp less than or equal to ts(Ti), i.e.: Xj is such that wts(Xj) <= ts(Ti), and there is no version Xh such that wts(Xj) < wts(Xh) <= ts(Ti). Note that such a version always exists, because it is impossible that all versions of X are greater than ts(Ti). Obviously, rts(Xj) is updated in the usual way. – For Xj with wts(Xj) such that no active transaction has timestamp less than j, the versions of X that precede Xj are deleted, from the oldest to the newest. – To ensure recoverability, the commit of Ti is delayed until all commit of the transactions Tj that wrote versions read by Ti are executed.
  • 142. New rules for the use of timestamps DBMS transactions and recovery 142 The scheduler uses suitable data structures: – For each version Xi the scheduler maintains a range range(Xi) = [wts, rts], where wts is the timestamp of the transaction that wrote Xi, and rts is the highest timestamp among those of the transactions that read Xi (if no one read Xi, then rts=wts). – We denote with ranges(X) the set: { range(Xi) | Xi is a version of X } – When ri(X) is processed, the scheduler uses ranges(X) to find the version Xj such that range(Xj) = [wts, rts] has the highest wts that is less than or equal to the timestamp ts(Ti) of Ti. Moreover, if ts(Ti) > rts, then the rts of range(Xj) is set to ts(Ti). – When wi(x) is processed, the scheduler uses ranges(X) to find the version Xj such that range(Xj) = [wts, rts] has the highest wts that is less than or equal to the timestamp ts(Ti) of Ti. Moreover, if rts > ts(Ti), then wi(X) is rejected, else wi(Xi) is accepted, and the version Xi with range(Xi) = [wts, rts], with wts = rts = ts(Ti) is created.
  • 143. Multiversion timestamp: example Suppose that the current version of A is A0, with rts(A0)=0. T5(ts=5) T1(ts=1) T2(ts=2) T3(ts=3) T4(ts=4) r1(A) w1(A) r2(A) w2(A) reads A0, and set rts(A0)=1 writes the new version A1 reads A1, and set rts(A1)=2 writes the new version A2 r4(A) r5(A) w3(A) reads A2, and set rts(A2)=4 reads A2, and set rts(A2)=5 rollback T3 DBMS transactions and recovery 143
  • 145. 1 - Transaction management DBMS transactions and recovery 145 1. Transactions, concurrency, serializability 2. Recoverability 3. Concurrency control through locks 4. Concurrency control through timestamps 5. Transaction management in SQL
  • 146. Transaction management in SQL DBMS transactions and recovery 146 • SQL-92 has constructs for defining transactions and concurrency levels • A single SELECT statement is considered as an atomic execution unit • SQL does not have an explicit BEGIN TRANSACTION statement • In SQL, every transaction must have an explicit termination statement (COMMIT or ROLLBACK)
  • 147. Example DBMS transactions and recovery 147 EXEC SQL WHENEVER sqlerror GO TO ESCI; EXEC SQL SET TRANSACTION READ WRITE , DIAGNOSTICS SIZE 8, ISOLATION LEVEL SERIALIZABLE; EXEC SQL INSERT INTO EMPLOYEE (Name, ID, Address) VALUES (‘John Doe',1234,‘xyz'); EXEC SQL UPDATE EMPLOYEE SET Address = ‘abc' WHERE ID = 1000; EXEC SQL COMMIT; GOTO FINE; ESCI: FINE: EXEC SQL ROLLBACK; …
  • 148. Ghost read DBMS transactions and recovery 148 • Since SQL considers a whole query as an atomic execution unit, we must consider a further anomaly, the so-called ghost read • Example: – T1 executes query SELECT * FROM R – T2 adds a record r to relation R – T1 executes the previous query again: the result of the second query contains record r, which was not in the first result • The ghost read anomaly is a generalized version of the unrepeatable read anomaly, in which the read operation retrieves a set of records instead of a single one
  • 149. SET TRANSACTION DBMS transactions and recovery 149 • The SET TRANSACTION statement allows for defining the following aspects: • Access mode: READ ONLY or READ WRITE • Isolation level of the transaction: can assume one of the following values: – READ UNCOMMITTED – READ COMMITTED – REPEATABLE READ – SERIALIZABLE (default value) • Configuration of the number of error conditions that can be handled (DIAGNOSTIC SIZE n)
  • 150. Isolation levels DBMS transactions and recovery 150 (We assume that the SET TRANSACTION statement is relative to transaction Ti) • SERIALIZABLE: – Transaction Ti only reads from committed transactions – No value read or written by transaction Ti can be modified until Ti commits – The set of records read by Ti through a query cannot be modified by other transactions until Ti commits (this condition avoids the ghost read anomaly)
  • 151. Isolation levels DBMS transactions and recovery 151 • REPEATABLE READ: – Transaction Ti only reads from committed transactions – No value read or written by transaction Ti can be modified until Ti commits – The set of records read by Ti through a query can be modified by other transactions until Ti commits (the ghost read anomaly is thus possible)
  • 152. Isolation levels DBMS transactions and recovery 152 • READ COMMITTED: – Transaction Ti only reads from committed transactions – No value written by transaction Ti can be modified until Ti commits, while values read by Ti can be modified by other transactions (thus, both the ghost read anomaly and the unrepeatable read anomaly are possible)
  • 153. Isolation levels DBMS transactions and recovery 153 • READ UNCOMMITTED: – Transaction Ti can read from any (even uncommitted) transaction (cascading rollback is thus possible) – Values both read and written by Ti can be modified by othwr transactions (thus, besides ghost read and unrepeatable read, also the dirty read anomaly is possible)
  • 154. Transaction management in commercial systems DBMS transactions and recovery 154 – The transaction managers of the main commercial systems (Oracle, DB2, SQL Server, PostgreSQL) use schedulers based on lock and/or (multiversion) timestamp methods – In such systems, the scheduler usually distinguishes between two classes of transactions: – The transactions with read and write are executed under the 2PL protocol – The transactions that are “read only” are executed under the method of multiversion timestamp
  • 155. 2. Recovery management DBMS transactions and recovery 155
  • 156. SQL engine Access file manager Buffer manager Security and recovery manager Disk manager Data SQL commands DBMS Transaction manager DBMS transactions and recovery 156 Architecture of a DBMS
  • 157. The recovery manager DBMS transactions and recovery 157 The transaction manager is mainly concerned with isolation and consistency, while the recovery manager is mainly concerned with atomicity and persistency. It is responsible for: – Beginning the execution of transactions – Committing transactions – Executing the rollback of transactions – Restore a correct state of the database following a fault condition It uses a special data structure, called log file
  • 158. Failure types DBMS transactions and recovery 158 • System failures – System crash: • We loose the buffer content, not the secondary storage content – System error or application exception • E.g. division by zero – Local error conditions of a transaction – Concurrency control • The scheduler forces the rollback of a transaction • Storage media failures – Disk failures • We loose secondary storage content, but not the log file content – Catastrophic events” • Fire • Flooding
  • 159. The strategies depend on the failures DBMS transactions and recovery 159 • System failures: – Information loss in the buffer, not in the data – Main risk for  Atomicity – Recovery strategy: • Periodically register the system status (checkpoint) • Analyze back the DB change history • Undo and redo some operations • Using the log • Media failure: – Information loss in th data – Main risk for  Durability – Recovery strategy : • Load the most recent available DB back-up • Reconstruct that state using the log, starting the dump
  • 160. The log file DBMS transactions and recovery 160 • The log file (or, simply, the log) records the actions of the various transactions in a stable storage (stable means “failure resistant”) • Read and write operations on the log are executed as the operations on the database, i.e., through the buffer. Note that writing on the stable storage is generally done through “force” • The stable storage is an abstraction: stability is achieved through replication • The physical organization of the log can be based on: – Tapes – Disk (perhaps coupled with tapes) – Two replicated disks
  • 161. The structure of log DBMS transactions and recovery 161 • The log is a sequential file (assumed to be failure-free). The operations on the log are: append a record at the end, scan the file sequentially forward, scan backward. • The log records the actions of the transactions, in chronologically order. • Two types of records in the log: – Transaction records (begin, insert, delete, update, commit, abort) – System records (checkpoint, dump) • Please, do not confuse the transaction actions with the actions on the secondary storage. In particular, the actions of the transactions are assumed to be executed on the DB when they are recorded in the log (even if their effects are not registered yet in the secondary storage)
  • 162. The transaction records DBMS transactions and recovery 162 O = element of the DB AS = After State, value of O after the operation BS = Before State, value of O before the operation For each transaction T, the transaction records are stored in the log as follows: – begin: – insert: – delete: – update: – commit: – abort: B(T) I(T,O,AS) D(T,O,BS) U(T,O,BS,AS) C(T) A(T)
  • 163. Checkpoint DBMS transactions and recovery 163 • The goal of the checkpoint is to register in the log the set of active transactions T1, …, Tn so as to differentiate them from the committed transactions • The checkpoint (CK) operation executes the following actions: – For each committed transaction after the last checkpoint, their buffer pages are copied into the secondary storage (through flush) – A record CK(T1,…Tn) is written on the log (through force), where T1,…Tn identify all active transactions that are uncommitted • It follows that: – For each transaction T such that Commit(T) precedes CK(T1,…Tn) in the log, we can avoid the “redo” in case of failure • The checkpoint operation is executed periodically, with fixed frequency
  • 164. Dump DBMS transactions and recovery 164 • The dump is a copy of the entire state of the DB • The dump operation is executed offline (all transactions are suspended) • It produces a backup, i.e., the DB is saved in stable storage • It writes (through force) a dump record in the log
  • 165. Example: log with checkpoint and dump CK Crash B(T1) B(T2) B(T3) U(T3,…) U(T1,…) C(T2) U(T2,…) U(T1,…) U(T1,…) dump DBMS transactions and recovery 165
  • 166. The Undo operation DBMS transactions and recovery 166 • Restore the state of an element O at the time preceding the execution of an action • update, delete: – assigns the BS value to O • insert: – delete O
  • 167. The Redo operation DBMS transactions and recovery 167 • Restore the state of an element O at the time following the execution of an action • insert, update: – assigns the value AS to O • delete: – delete O
  • 168. Atomicity of transactions DBMS transactions and recovery 168 • The outcome of a transaction is established when either the Commit(T) record or the Abort(T) record is written in the log – The Commit(T) record is written synchronously (force) from the buffer to the log – The Abort(T) record is written asynchronously (flush) from the buffer to the log (the recovery manager does not need to know immediately that a transaction is aborted) • When a failure occurs, for a transaction – Uncommitted: since atomicity has to be ensured, in general we may need to undo the actions, especially if there is the possibility that the actions have been executed on the secondary storage  Undo – Committed: we need to redo the actions, to ensure durability  Redo
  • 169. Writing records in the log DBMS transactions and recovery 169 The recovery manager follows this rule: • WAL (write-ahead log) – The log records are written from the buffer to the log before the corresponding records are written in the secondary storage – This is important for the effectiveness of the Undo operation, because the old value can always be written back to the secondary storage by using the BS value written in the log. In other words, WAL allows to undo write operations executed by uncommitted transactions
  • 170. Writing records in the log DBMS transactions and recovery 170 The recovery manager follows this rule: • Commit-Precedence – The log records are written from the buffer to the log before the commit of the transaction (and therefore before writing the commit record of the transaction in the log) – This is important for the effectiveness of the Redo operation, because if a transaction committed before a failure, but its pages have not been written yet in secondary storage, we can use the AS value in the log to write such pages. In other words, the Commit-Precedence rule allows committed transactions whose effects have not been registered yet in the database to be redone.
  • 171. Writing in secondary storage DBMS transactions and recovery 171 For each operation – Update – Insert – Delete The recovery manager must decide on the strategy for writing in secondary storage In the following, we concentrate on update, but similar considerations hold for the other operations
  • 172. Writing in secondary storage DBMS transactions and recovery 172 There are three possible methods for writing values into the secondary storage, all coherent with the WAL and the commit-precedence rules • Immediate effect – The update operations are executed immediately on the secondary storage after the corresponding records are written in the log – The buffer manager writes (either with force or flush) the effect of an operation by a transaction T on the secondary storage before writing the commit record of T in log – It follows that all the pages of the DB modified by a transaction are certainly written in the secondary storage • Delayed effect – The update operations by a transaction T are executed on the secondary storage only after the commit of the transaction, i.e., only after the commit record of T has been written in the log – As usual, the log records are written in the log before the corresponding data are written in secondary storage • Mixed effect – For an operation O, both the immediate effect and and the delayed effect are possible, depending on the choice of the buffer manager
  • 173. Examples Immediate DBMS transactions and recovery 173 Delayed Mixed (T) Writes on the log Writes on the database (T) (T)
  • 174. Immediate effect • The secondary storage may contain AS values from uncomitted transactions • Undo of transactions that are uncomitted when the failure occurs is needed • Redo is not needed (if the commit record of T is in the log, all pages of T have been written in secondary storage) dump CK Crash T1 T2 T3 T4 T5 Nothing Nothing Nothing Undo Undo DBMS transactions and recovery 174
  • 175. Delayed effect • The secondary storage does not contain AS values from uncomitted transactions • Undo is not needed (when we rollback a transaction T, nothing has been done by T on the secondary storage) • Redo is needed dump CK Crash T1 T2 T3 T4 T5 Nothing Redo Redo Nothing Nothing DBMS transactions and recovery 175
  • 176. Mixed effect • The buffer manager decides its strategy for each of the operation (for this reason, this is the most used method). In particular, this strategy allows to to optimize the execution of the flush operation • Both Undo and Redo are needed dump CK Crash T1 T2 T3 T4 T5 Redo Redo Undo Undo Nothing DBMS transactions and recovery 176
  • 177. Two types of recovery DBMS transactions and recovery 177 Depending on the type of failure… • In case of system failure: – Warm restart • In case of disk failure: – Cold restart
  • 178. Warm restart DBMS transactions and recovery 178 We will assume the mixed effect strategy. The warm restart is constituted by 5 steps: 1. We go backward through the log until the most recent checkpoint record in the log 2. We set s(UNDO) = { active transactions at checkpoint } s(REDO) = { } 3. We go forward through the log adding to s(UNDO) the transactions with the corresponding begin record, and moving those with the commit record to s(REDO) 4. Undo phase: we go backward through the log again, undoing the transactions in s(Undo) until the begin record of the oldest transaction in the set of active transactions at the last checkpoint (note that we may even go before the most recent checkpoint record) 5. Redo phase: we go forward through the log again, redoing the transactions in s(Redo)
  • 179. Warm restart: example B(T1) B(T2) U(T2, O1, B1, A1) I(T1, O2, A2) B(T3) C(T1) B(T4) U(T3,O2,B3,A3) U(T4,O3,B4,A4) CK(T2,T3,T4) C(T4) B(T5) U(T3,O3,B5,A5) U(T5,O4,B6,A6) D(T3,O5,B7) A(T3) C(T5) I(T2,O6,A8) CK Crash T4 T1 T2 T3 T5 C A C C DBMS transactions and recovery 179
  • 180. Example: the most recent checkpoint B(T1) B(T2) U(T2, O1, B1, A1) I(T1, O2, A2) B(T3) C(T1) B(T4) U(T3,O2,B3,A3) U(T4,O3,B4,A4) CK(T2,T3,T4) C(T4) B(T5) U(T3,O3,B5,A5) U(T5,O4,B6,A6) D(T3,O5,B7) A(T3) C(T5) I(T2,O6,A8) Crash T4 T1 T2 T3 T5 C UNDO = {T2,T3,T4} CK A DBMS transactions and recovery 180 C C
  • 181. Example: s(UNDO) and s(REDO) B(T1) B(T2) 8. U(T2, O1, B1, A1) I(T1, O2, A2) B(T3) C(T1) B(T4) 7. U(T3,O2,B3,A3) 9. U(T4,O3,B4,A4) 1. C(T4) 2. B(T5) 6. U(T3,O3,B5,A5) 10. U(T5,O4,B6,A6) 5. D(T3,O5,B7) A(T3) 3. C(T5) 4. I(T2,O6,A8) 0. UNDO = {T2,T3,T4}. REDO = {} 1. C(T4)  UNDO = {T2, T3}. REDO = {T4} 2. B(T5)  UNDO = {T2,T3,T5}. REDO = {T4} 3. C(T5)  UNDO = {T2,T3}. REDO = {T4, T5} DBMS transactions and recovery 181
  • 182. Example: the UNDO phase B(T1) B(T2) 8. U(T2, O1, B1, A1) I(T1, O2, A2) B(T3) C(T1) B(T4) 7. U(T3,O2,B3,A3) 9. U(T4,O3,B4,A4) 1. C(T4) 2. B(T5) 6. U(T3,O3,B5,A5) 10. U(T5,O4,B6,A6) 5. D(T3,O5,B7) A(T3) 3. C(T5) 4. I(T2,O6,A8) 0. UNDO = {T2,T3,T4}. REDO = {} 1. C(T4)  UNDO = {T2, T3}. REDO = {T4} 2. B(T5)  UNDO = {T2,T3,T5}. REDO = {T4} 3. C(T5)  UNDO = {T2,T3}. REDO = {T4, T5} 4. D(O6) 5. O5 =B7 6. O3 = B5 7. O2 =B3 8. O1=B1 Undo phase DBMS transactions and recovery 182
  • 183. Example: the REDO phase B(T1) B(T2) 8. U(T2, O1, B1, A1) I(T1, O2, A2) B(T3) C(T1) B(T4) 7. U(T3,O2,B3,A3) 9. U(T4,O3,B4,A4) 1. C(T4) 2. B(T5) 6. U(T3,O3,B5,A5) 10. U(T5,O4,B6,A6) 5. D(T3,O5,B7) A(T3) 3. C(T5) 4. I(T2,O6,A8) 0. UNDO = {T2,T3,T4}. REDO = {} 1. C(T4)  UNDO = {T2, T3}. REDO = {T4} 2. B(T5)  UNDO = {T2,T3,T5}. REDO = {T4} 3. C(T5)  UNDO = {T2,T3}. REDO = {T4, T5} 4. D(O6) 5. O5 =B7 6. O3 = B5 7. O2 =B3 8. O1=B1 9. O3 = A4 10. O4 = A6 Undo phase Redo phase DBMS transactions and recovery 183
  • 184. Cold restart DBMS transactions and recovery 184 It is constituted by three phases: 1. Search for the most recent dump record in the log, and load the dump into the secondary storage (more precisely, we selectively copy the fragments of the DB that have been damaged by the disk failure) 2. Forward recovery of the dump state: 1. We re-apply all actions in the log, in the order determined by the log 2. At this point, we have the database state immediately before the crash 3. We execute the warm restart procedure
  • 185. Exercise: cold restart DBMS transactions and recovery 185 • Consider the following log: DUMP, B(T1), B(T2), B(T3), I(T1,O1,A1), D(T2,O2,B2), B(T4), U(T4,O3,B3,A3), U(T1,O4,B4,A4), C(T2), CK(T1,T3, T4), B(T5), B(T6), U(T5,O5,B5,A5), A(T3), CK(T1,T4,T5,T6), B(T7), A(T4), U(T7,O6,B6,A6), U(T6,O3,B7,A7), B(T8), C(T7) • Suppose that a disk failure occurs. Assume the mixed strategy.
  • 186. Solution: reconstruct the DB from DUMP DBMS transactions and recovery 186 • DUMP, B(T1), B(T2), B(T3), I(T1,O1,A1), D(T2,O2,B2), B(T4), U(T4,O3,B3,A3), U(T1,O4,B4,A4), C(T2), CK(T1,T3, T4), B(T5), B(T6), U(T5,O5,B5,A5), A(T3), CK(T1,T4,T5,T6), B(T7), A(T4), U(T7,O6,B6,A6), U(T6,O3,B7,A7), B(T8), C(T7) • We go to the most recent dump record in the log (the first record), and load the dump into the secondary storage • We scan the log forward starting from B(T1), and we execute all actions in the log, until C(T7) • We execute the warm restart procedure
  • 187. Solution: warm restart B(T1), B(T2), B(T3), I(T1,O1,A1), D(T2,O2,B2), B(T4), U(T4,O3,B3,A3), U(T1,O4,B4,A4), C(T2), CK(T1,T3, T4), B(T5), B(T6), U(T5,O5,B5,A5), A(T3), CK(T1,T4,T5,T6), B(T7), A(T4), U(T7,O6,B6,A6), U(T6,O3,B7,A7), B(T8), C(T7) CK Crash T4 T1 T2 T3 T5 C A T6 T7 T8 C CK DBMS transactions and recovery 187 A
  • 188. Solution: most recent checkpoint B(T1), B(T2), B(T3), I(T1,O1,A1), D(T2,O2,B2), B(T4), U(T4,O3,B3,A3), U(T1,O4,B4,A4), C(T2), CK(T1,T3, T4), B(T5), B(T6), U(T5,O5,B5,A5), A(T3), CK(T1,T4,T5,T6), B(T7), A(T4), U(T7,O6,B6,A6), U(T6,O3,B7,A7), B(T8), C(T7) Crash UNDO = {T1, T4, T5, T6} CK T1 T2 T3 T4 T5 T6 T7 T8 C A C DBMS transactions and recovery 188 A
  • 189. Solution: the UNDO and REDO sets 0. UNDO = {T1, T4, T5, T6}. REDO = {} 1. B(T7)  {T1, T4, T5, T6, T7}. REDO = {} 2. B(T8)  {T1, T4, T5, T6, T7, T8}. REDO = {} 3. C(T7)  {T1, T4, T5, T6, T8}. REDO = {T7} B(T1), B(T2), B(T3), I(T1,O1,A1), D(T2,O2,B2), B(T4), U(T4,O3,B3,A3), U(T1,O4,B4,A4), C(T2), CK(T1,T3, T4), B(T5), B(T6), U(T5,O5,B5,A5), A(T3), CK(T1,T4,T5,T6), B(T7), A(T4), U(T7,O6,B6,A6), U(T6,O3,B7,A7), B(T8), C(T7) DBMS transactions and recovery 189
  • 190. Solution: the UNDO phase 0. UNDO = {T1, T4, T5, T6}. REDO = {} 1. B(T7)  {T1, T4, T5, T6, T7}. REDO = {} 2. B(T8)  {T1, T4, T5, T6, T7, T8}. REDO = {} 3. C(T7)  {T1, T4, T5, T6, T8}. REDO = {T7} 4. O3 = B7 5. O5 = B5 6. O4 = B4 7. O3 = B3 8. D(O1) B(T1), B(T2), B(T3), I(T1,O1,A1), D(T2,O2,B2), B(T4), U(T4,O3,B3,A3), U(T1,O4,B4,A4), C(T2), CK(T1,T3, T4), B(T5), B(T6), U(T5,O5,B5,A5), A(T3), CK(T1,T4,T5,T6), B(T7), A(T4), U(T7,O6,B6,A6), U(T6,O3,B7,A7), B(T8), C(T7) Undo phase DBMS transactions and recovery 190
  • 191. Solution: the REDO phase 0. UNDO = {T1, T4, T5, T6}. REDO = {} 1. B(T7)  {T1, T4, T5, T6, T7}. REDO = {} 2. B(T8)  {T1, T4, T5, T6, T7, T8}. REDO = {} 3. C(T5)  {T1, T4, T5, T6, T8}. REDO = {T7} 4. O3 = B7 5. O5 = B5 6. O4 = B4 7. O3 = B3 8. D(O1) 9. O6 = A6 B(T1), B(T2), B(T3), I(T1,O1,A1), D(T2,O2,B2), B(T4), U(T4,O3,B3,A3), U(T1,O4,B4,A4), C(T2), CK(T1,T3, T4), B(T5), B(T6), U(T5,O5,B5,A5), A(T3), CK(T1,T4,T5,T6), B(T7), A(T4), U(T7,O6,B6,A6), U(T6,O3,B7,A7), B(T8), C(T7) Redo phase DBMS transactions and recovery 191 Undo phase
  • 192.
  • 193. RECOVERY WITH CONCURRENT TRANSACTION PRESENTED BY M . LAVANYA M.Sc(CS & IT) NADAR SARASWATHI COLLEGE OF ARTS &SCIENCE VADAPUDUPATTI , THENI.
  • 194. INTRODUCTION • Recovery in a single transaction at a time is executing • We can modify and extend the log-based recovery scheme with multiple concurrent transactions. • The system has a single disk buffer and a single log. • Immediate update and permit a buffer block to update the data item.
  • 195. INTERACTION WITH CONCURRENCY CONTROL • Concurrency control using strict two-phase locking: how to perform undo if updates A , then t2 updates A and commits and finally t1 h as to abort. • Logging is done as log records of different transactions may be interspersed in the log . • The check pointing techniques and actions taken on recovery have to be changed several transactions may be active when a check point is performed.
  • 196. Transaction Rollback • Roll back a failed transaction, Ti, by using the log. The system scans the log back- ward; for every log record of the form <Ti, Xj , V1, V2> found in the log, the system restores the data item Xj to its old value V1. • Scanning of the log terminates when the log record <Ti, start> is found. • Scanning the log backward is important, since a transaction may have updated a data item more than once. As an illustration, consider the pair of log records <Ti,A, 10, 20> <Ti,A, 20, 30>
  • 197. Checkpoints checkpoints to reduce the number of log records that the system must scan when it recovers from a crash. Since we assumed no concurrency, it was necessary to consider only the following transactions during recovery: • Those transactions that started after the most recent checkpoint • The one transaction, if any, that was active at the time of the most recent check- point
  • 198. • In a concurrent transaction-processing system, we require that the checkpoint log record be of the form <checkpoint L>, where L is a list of transactions active at the time of the checkpoint. • The requirement that transactions must not perform any updates to buffer blocks or to the log during check pointing. • A fuzzy checkpoint is a check- point where transactions are allowed to perform updates even while buffer blocks
  • 199. • The system constructs the two lists as follows: Initially, they are both empty. The system scans the log backward, examining each record, until it find the first. <checkpoint> record: • For each record found of the form <Ti commit>, it adds Ti to redo-list. • For each record found of the form <Ti start>, if Ti is not in redo-list, then it adds Ti to undo-list.
  • 200. The recovery proceeds as follows: 1. The system rescans the log from the most recent record backward, and per- forms an undo for each log record that belongs transaction Ti on the undo-list. 2. The system locates the most recent <checkpoint L> record on the log. Notice that this step may involve scanning the log forward, if the checkpoint record was passed in step 1. 3. The system scans the log forward from the most recent <checkpoint L> record, and performs redo for each log record that belongs to a transaction Ti that is on the redo-list.
  • 201. • It is important to undo the transaction in the undo-list before redoing transactions in the redo- list, using the algorithm in steps 1 to 3; otherwise, a problem may occur. Suppose that data item A initially has the value 10. • another transaction Tj then updated data item A to 30 and committed, following which the system crashed. The state of the log at the time of the crash is <Ti, A, 10, 20> <Tj , A, 10, 30> <Tj commit>