0% found this document useful (0 votes)
44 views25 pages

CH 16 Updated

16

Uploaded by

Utsav Raithatha
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
44 views25 pages

CH 16 Updated

16

Uploaded by

Utsav Raithatha
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd

Chapter 16 : Concurrency Control

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.)
● Lock-compatibility matrix

● 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 lock 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-Based Protocols (Cont.)
● Example of a transaction performing locking:
T2: lock-S(A);
read (A);
unlock(A);
lock-S(B);
read (B);
unlock(B);
display(A+B)
● Locking as above is not sufficient to guarantee serializability — if A and B get updated in-
between the read of A and B, the displayed sum would be wrong.
● A locking protocol is a set of rules followed by all transactions while requesting and
releasing locks. Locking protocols restrict the set of possible schedules.
Pitfalls 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 a 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.
Lock Conversions
● Two-phase locking with lock conversions:

– First Phase: (Growing 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: (Shrinking 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.


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

| 10
Lock Table
● Black rectangles indicate granted locks,
white ones indicate waiting requests
● Lock table also records the type of lock granted
or requested
● New request is added to the end of the queue of
requests for the data item, and granted if it is
compatible with all earlier locks
● Unlock requests result in the request being
deleted, and later requests are checked to see if
they can now be granted
● If transaction aborts, all waiting or granted
requests of the transaction are deleted
● lock manager may keep a list of locks held by
Granted each transaction, to implement this
efficiently
Waiting

| 11
Graph-Based Protocols
● Graph-based protocols are an alternative to two-phase locking
● Impose a partial ordering → on the set D = {d1, d2 ,..., dh} of all data items.
● If di → dj then any transaction accessing both di and dj must access di before
accessing dj.
● Implies that the set D may now be viewed as a directed acyclic graph, called a
database graph.
● The tree-protocol is a simple kind of graph protocol.
Tree Protocol

1. Only exclusive locks are allowed.


2. The first lock by Ti may be on any data item. Subsequently, a data Q can be
locked by Ti only if the parent of Q is currently locked by Ti.
3. Data items may be unlocked at any time.
4. A data item that has been locked and unlocked by Ti cannot subsequently be
relocked by Ti
Graph-Based Protocols (Cont.)
● The tree protocol ensures conflict serializability as well as freedom from
deadlock.
● Unlocking may occur earlier in the tree-locking protocol than in the two-phase locking
protocol.
● shorter waiting times, and increase in concurrency
● protocol is deadlock-free, no rollbacks are required
● Drawbacks
● Protocol does not guarantee recoverability or cascade freedom
● Need to introduce commit dependencies to ensure recoverability
● Transactions may have to lock data items that they do not access.
● increased locking overhead, and additional waiting time
● potential decrease in concurrency
Multiple Granularity
● 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 descendants (children) in the same node.
● 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
Example of Granularity Hierarchy

The levels, starting from the coarsest (top) level are


● database
● area
● file
● record
Deadlock Handling
● Consider the following two transactions:
T1: write (X) T2: write(Y)
write(Y) write(X)
● Schedule with deadlock

T1 T2

lock-X on X
write (X)
lock-X on Y
write (Y)
wait for lock-X on X
wait for lock-X on Y
Deadlock Handling
● System is deadlocked if there is a set of transactions such that every transaction in
the set is waiting for another transaction in the set.
● Deadlock prevention protocols ensure that the system will never enter into
a deadlock state. Some prevention strategies :
● Require that each transaction locks all its data items before it begins
execution (pre-declaration).
● Impose partial ordering of all data items and require that a transaction can
lock data items only in the order specified by the partial order (graph-based
protocol).
Deadlock Prevention Strategies
● Following schemes use transaction timestamps for the sake of deadlock prevention
alone.

● wait-die scheme
● When an older transaction tries to lock a DB element that has been locked by
a younger transaction, it waits.
● When a younger transaction tries to lock a DB element that has been locked by
an older transaction, it dies.

● wound-wait scheme
● When an older transaction tries to lock a DB element that has been locked by
a younger transaction, it wounds (forces rollback) the younger transaction.
● When a younger transaction tries to lock a DB element that has been locked by
an older transaction, it waits.
Deadlock Prevention Strategies (conti…)
• Difference between wait-die and wound-wait:

• In wait-die, the newer transactions are killed when the newer transaction
makes a request for a lock being held by an older transactions.

• In wound-wait, The newer transactions are killed when an older


transaction makes a request for a lock being held by the newer transactions.

• In both the schemes, only the transaction that enters the system at
a later timestamp (i.e. the younger transaction) is killed (wounded) and
restarted (Died).

• A rolled back transaction is restarted with its original timestamp.


Deadlock prevention (Cont….)

● Timeout-Based Schemes :
● a transaction waits for a lock only for a specified amount of time. After
that, the wait times out and the transaction is rolled back.
● thus deadlocks are not possible
● simple to implement; but starvation is possible. Also difficult to determine
good value of the timeout interval.
Deadlock Detection
● Deadlocks can be described as a wait-for graph, which consists of a pair G = (V,E),
● V is a set of vertices (all the transactions in the system)
● E is a set of edges; each element is an ordered pair Ti →Tj.
● If Ti → Tj is in E, then there is a directed edge from Ti to Tj, implying that Ti is
waiting for Tj to release a data item.
● When Ti requests a data item currently being held by Tj, then the edge Ti →
Tj is inserted in the wait-for graph. This edge is removed only when Tj is no
longer holding a data item needed by Ti.
● The system is in a deadlock state if and only if the wait-for graph has a
cycle. Must invoke a deadlock-detection algorithm periodically to look for cycles.
Deadlock Detection (Cont.)

Wait-for graph without a cycle Wait-for graph with a cycle


Deadlock Recovery
● When deadlock is detected :
● Some transaction will have to rolled back (made a victim) to break
deadlock. Select that transaction as victim that will incur minimum cost.
● Rollback -- determine how far to roll back transaction
• Total rollback: Abort the transaction and then restart it.
• More effective to roll back transaction only as far as necessary to break
deadlock.
● Starvation happens if the same transaction is always chosen as victim. Include
the number of rollbacks in the cost factor to avoid starvation.
End of Chapter

You might also like