Non-strict two-phase locking
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:
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:
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.
T1 & T2 \\
X(A) & \\
R(A) & \\
& X(A) \\
& R(A) \\
& X(B)\\
& R(B) \\
& W(B)\\
X(B) & \\
R(B) & \\
W(B) & \\
Com. &\\
& Com. \end{bmatrix}</math>
T1 & T2\\
X(A) & \\
& X(B) & \\
X(B) & \\
& X(A) \end{bmatrix}</math>