Multiple Granularity Locking Protocol
This protocol uses these lock modes to ensure serializability.
It requires that a transaction ‘Ti’ that attempts to lock a node ‘Q’ must follow the below rules:
(a) Transaction Ti must observe the Lock-Compatibility function.
(b) Transaction Ti must lock the tree’s root first and can look at it in any mode.
(c) Transaction Ti can lock a node Q in S or IS mode only if transaction Ti currently has the Parent of Q locked in either IX or IS mode.
(d) Transaction Ti can lock a node Q in X, SIX, or IX mode only if transaction Ti currently has the parent of Q locked in either IX or SIX mode.
(e) Transaction Ti can lock a node only if transaction Ti has not previously unlocked any node.
(f) Transaction Ti can unlock a node Q only if transaction Ti currently has none of the children of Q locked.
EXAMPLE-1 :
(a) Suppose that Transaction T21 reads a record REC-A2 in FILE-A. Then, T21 needs to lock the database, AREA-1 and FILE-A in IS mode, and finally to lock REC-A2 in S mode.
(b) Suppose that Transaction T22 modifies REC-A9 in FILE-A. Then, T22 needs to lock the database, AREA-1 and FILE-A in IX mode, and finally to lock REC-A9 in X mode.
(c) Suppose that Transaction T23 reads all the records in FILE-A. Then, T23 needs to lock the database and AREA-1 in IS mode, and finally to lock FILE-A in S mode.
(d) Suppose that Transaction T24 reads the entire database. After locking the database in S mode, it can do so.
Reference Link