Let us explain the above two modes with the help of an instance. We will once again consider the transactions T1 and T2 but in addition a transaction T11 that search the total of accounts Y and Z.
X_Lock X. The exclusive lock request on X is denied as T2 holds the Read lock. The transaction T1 Waits.
X_Lock Y. The previous exclusive lock request on X is granted as X is unlocked. But the new exclusive lock request on Y is not granted as Y is locked by T2 and T11 in read mode. Thus T1 waits till both T2 and T11 will release the read lock on Y.
Figure: Example of Locking in multiple-modes
Therefore, the locking as above results in a serialisable schedule. Now the query is can we release locks a bit early and have still no concurrency related problem?Yes, we can do it if we lock using two-phase locking protocol.