Locking Protocol
Locking
protocols are used in database management systems as a means of concurrency
control. Multiple transactions may request a lock on a data item
simultaneously. Hence, a mechanism is required to manage the locking requests
made by transactions. Such a mechanism is called as Lock Manager.
It relies on the process of message passing where transactions and lock manager
exchange messages to handle the locking and unlocking of data items.
Data structure used in Lock Manager –
The data structure required for implementation of locking is called as Lock table.
The data structure required for implementation of locking is called as Lock table.
- It is a hash table where name
of data items are used as hashing index.
- Each locked data item has a
linked list associated with it.
- Every node in the linked list
represents the transaction which requested for lock, mode of lock
requested (mutual/exclusive) and current status of the request
(granted/waiting).
- Every new lock request for the
data item will be added in the end of linked list as a new node.
- Collisions in hash table are handled by technique of separate chaining.
Working of Lock Manager –
- Initially the lock table is
table empty as no data item is locked.
- Whenever lock manger receives a
lock request from a transaction Ti on a particular data
item Qi following cases may arise:
- If Qi is not
already locked, a linked list will be created and lock will be granted to
the requesting transaction Ti.
- If the data item is already
locked, a new node will be added at the end of its linked list containing
the information about request made by Ti.
- If the lock mode requested by Ti is
compatible with lock mode of transaction currently having the lock, Ti will
acquire the lock too and status will be changed to ‘granted’. Else, status
of Ti’s lock will be ‘waiting’.
- If a transaction Ti wants
to unlock the data item it is currently holding, it will send an unlock
request to the lock manager. The lock manger will delete Ti’s
node from this linked list. Lock will be granted to the next transaction
in the list.
- Sometimes transaction Ti may
have to be aborted. In such a case all the waiting request made by Ti will
be deleted from the linked lists present in lock table. Once abortion is
complete, locks held by Ti will also be released.
Locks
A
lock is a data variable which is associated with a data item. This lock
signifies that operations that can be performed on the data item. Locks help
synchronize access to the database items by concurrent transactions.
All
lock requests are made to the concurrency-control manager. Transactions proceed
only once the lock request is granted.
Binary Locks: A
Binary lock on a data item can either locked or unlocked states.
Shared/exclusive: This type of locking mechanism separates the locks based on
their uses. If a lock is acquired on a data item to perform a write operation,
it is called an exclusive lock.
1.
Shared Lock (S): A shared lock is also called a Read-only lock. With the shared
lock, the data item can be shared between transactions. This is because you
will never have permission to update data on the data item.
For
example, consider a case where two transactions are reading the account balance
of a person. The database will let them read by placing a shared lock. However,
if another transaction wants to update that account's balance, shared lock
prevent it until the reading process is over.
No comments:
Post a Comment