| |||||||||
In computer science, non-strict two-phase locking, also 2PL, is a locking method used in database management systems.
The rules for 2PL are similar to those of Strict 2PL:
So, every transaction has a growing phase (it acquires locks) and a shrinking phase (it releases locks). 2PL allows only conflict serializable schedules.
2PL in action:
T1 & T2 \\ X(A) & \\ R(A) & \\
X(B) & \\ R(B) & \\ W(B) & \\ Com. &\\
Notice that in this schedule, A and B can be accessed by both T1 and T2 even before commit time.
The deadlocked schedule in Strict 2PL:
T1 & T2\\ X(A) & \\
X(B) & \\
Text: T1: X(A) T2:X(B) T1:X(B) T2: X(A)
does not need to be deadlocked in 2PL, since T1 and T2 can release its locks on its objects before the other transaction requests locks on the objects.