Working as Lock Manager
- Initially, the lock table is empty as no data item is locked.
- Whenever the lock manager 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 a 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 the request made by Ti.
- If the lock mode requested by Ti is compatible with the lock mode of the transaction currently having the lock, Ti will acquire the lock too and the status will be changed to ‘granted’. Else, the status of Ti’s safety 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 manager will delete Ti’s node from this linked list. The 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 requests made by Ti will be deleted from the linked lists present in the lock table. Once abortion is complete, locks held by Ti will also be released.
Implementation of Locking in DBMS
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, we require a mechanism to manage the locking requests made by transactions. Such a mechanism is called a 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.