Chapter 4 Concurrency Control
Chapter 4 Concurrency Control
Requests from
transactions
Lock Scheduler
Table
Read and Writes
Buffers 2
Introduction…
The Purpose of Concurrency Control is:
– To enforce Isolation (through mutual exclusion) among
conflicting transactions.
– To preserve database consistency through consistency
preserving execution of transactions.
– To resolve read-write and write-write conflicts.
• A typical scheduler does its work by maintaining locks on certain
pieces of the database.
• These locks prevent two transactions from accessing the same
piece of data at the same time. Example:
– In concurrent execution environment if T1 conflicts with T2
over a data item A, then the existing concurrency control
decides if T1 or T2 should get the data item A and if the other
transaction is rolled-back or waits.
3
Introduction…
Example:
Bank database: 3
Accounts A = 500
Account B = 500
Balance
s C = 500
Property: A + B + C = 1500
Example
Transaction T1: Transfer Transaction T2: Transfer
100 from A to B 100 from A to C
Read (A) Read (A)
A = A - 100 A= A - 100
Write (A) Write (A)
Read (B) Read (C)
B = B+ 100 C = C + 100
Write (B) Write (C)
5
Transaction T1 Transaction T2 A B C
Read (C)
C= C + 100
Write (C) 400 600 600
Schedule 6
400 + 600 + 600 = 1600
Transaction T1 Transaction T2 A B C
Read (C)
C= C+ 100
Alternative Write (C) 300 600 600
Schedule
300 + 600 + 600 = 1500 7
So What ?
Concurrency Control Techniques
– Lock Granularity
8
Locking
⚫ Lock is a variable associated with a data item that describes the
status of the data item with respect to the possible operations that
can be applied to it.
⚫ Generally, a transaction must claim a shared (read) or exclusive
11
Cont …
▪ Lock Manager:
• Keep track of and control access to locks on data items.
▪ Lock table:
• Lock manager uses it to store the identity of a transaction
locking a data item, the data item, lock mode and pointer to
the next data item locked. One simple way to implement a
lock table is through linked list.
• If transaction has shared lock on item, it can read but not update
item.
• If transaction has exclusive lock on item, it can both read and
update item.
• Reads cannot conflict, so more than one transaction can hold shared
locks simultaneously on same item.
• Exclusive lock gives transaction exclusive access to that item.
Locking …
• The following code performs the read • The following code performs
operation: read_lock(X): the write lock operation:
B: if LOCK (X) = “unlocked” then write_lock(X):
begin
LOCK (X) ← “read-locked”; B: if LOCK (X) =
no_of_reads (X) ← 1; “unlocked” then
end
else if LOCK (X) ← “read-locked” then
LOCK (X) ←
no_of_reads (X) ← no_of_reads (X) “write-locked”;
+1 else
else begin
wait (until LOCK (X) = “unlocked” wait (until LOCK(X)
and = “unlocked”
the lock manager wakes up the
transaction); and the lock
go to B manager wakes up the
end; transaction);
goto B
15
end;
Two-Phase Locking Techniques:
• Every transaction can be divided into Two Phases: Locking
(Growing) & Unlocking (Shrinking)
– Locking (Growing) Phase:
• A transaction applies locks (read or write) on desired data
items one at a time.
• acquires all locks but cannot release any locks.
– Unlocking (Shrinking) Phase:
• A transaction unlocks its locked data items one at a time.
• Releases locks but cannot acquire any new locks.
• .
16
Cont...
• Requirement:
– For a transaction these two phases must be mutually
exclusively, that is, during locking phase unlocking phase must
not start and during unlocking phase locking phase must not
begin
# locks
held by
Ti
Example
T1 T2 Result
read_lock (Y); read_lock (X); Initial values: X=20; Y=30
read_item (Y); read_item (X); Result of serial execution
unlock (Y); unlock (X); T1 followed by T2
write_lock (X); Write_lock (Y); X=50, Y=80.
read_item (X); read_item (Y);
Result of serial execution
X:=X+Y; Y:=X+Y;
write_item (X); write_item (Y); T2 followed by T1
unlock (X); unlock (Y); X=70, Y=50
18
cont…
T1 T2
read_lock (Y);
read_item (Y);
unlock (Y);
read_lock (X);
read_item (X); Result
unlock (X); X=50; Y=50
write_lock (Y);
read_item (Y); Nonserializable
Y:=X+Y; because it violated
write_item (Y); two-phase policy.
unlock (Y);
write_lock (X);
read_item (X);
X:=X+Y;
write_item (X);
Tim unlock (X);
e
19
Cont..…
T’1 T’2
read_lock (Y); read_lock (X);
read_item (Y); read_item (X);
write_lock (X); Write_lock (Y); T’1 and T’2 follow
two-phase
unlock (Y); unlock (X); . policy but they are subject
read_item (X); read_item (Y); to
X:=X+Y; Y:=X+Y; deadlock, which must be
dealt with
write_item (X); write_item (Y);
unlock (X); unlock (Y);
• If every transaction in the schedule follows the 2PL protocol , the
schedule is guaranteed to be serializabe
• Limitation
– It may limit the amount of concurrency control that can occur
20 in
the schedule . How?
Dealing with Deadlock and Starvation
• Remark:
– 2PL protocol guarantees serialzability but it doesn’t permit all the
possible serializability schedule
– The use of this locking can cause two additional problems
• Deadlock
• Starvation
21
Cont...
⚫ Deadlock
⚫ It is a state that may result when two or more transactions
are each waiting for locks held by the other to be released
⚫ Example : ⚫ T1 is in the waiting queue for
X which is locked by T2
T1 T2
⚫ T2 is on the waiting queue for
read_lock (Y); Y which is locked by T1
read_item (Y); ⚫ No transaction can continue
read_lock (X); until the other transaction
read_item (X); completes
write_lock (X); ⚫ T1 and T2 did follow
write_lock (Y); two-phase policy but they are
deadlock
⚫ So the DBMS must either
prevent or detect and resolve
such deadlock situations
Cont…
25
Cont …
iii. Timeouts
• It uses the period of time that several transaction have been waiting
to lock items
• It has lower overhead cost and it is simple
• If the transaction wait for a longer time than the predefined time out
period, the system assume that may be deadlocked and aborted it
▪ Starvation
• Starvation occurs when a particular transaction consistently waits or
restarted and never gets a chance to proceed further while other
transaction continue normally
• This may occur , if the waiting method for item locking:
– Gave priority for some transaction over others
– Problem in Victim selection algorithm- it is possible that the same
transaction may consistently be selected as victim and rolled-back.
– Solution
• FIFO
• Allow for transaction that wait for a longer time 26
• Give higher priority for transaction that have been aborted for
Timestamp based concurrency control algorithm
• Timestamp
– In lock based concurrency control , conflicting actions of different
transactions are ordered by the order in which locks are obtained.
– But here, Timestamp values are assigned based on time in which
the transaction are submitted to the system using the current date
& time of the system
– A monotonically increasing variable (integer) indicating the age of
an operation or a transaction.
i. Read phase:
– A transaction can read values of committed data items.
However, updates are applied only to local copies (versions) of
the data items (in database cache).
30
Cont..
• ii. Validation phase:.
▪ Ti starts its write phase after Tj completes its write phase and the
read set of Ti has no item in common with the write set of Tj
32
Cont....
− When validating Ti, the first condition is checked first for each
transaction Tj, since (1) is the simplest condition to check. If (1)
is false then (2) is checked and if (2) is false then (3 ) is checked.
− If none of these conditions holds, the validation fails and Ti is
aborted.
▪ A database record
▪ A disk block/ page
▪ An entire file
▪ The entire database
▪ Data item granularity significantly affects concurrency control 34
Cont...
▪ Example: