Cascading rollbacks are undesirable since they potentially lead to the undoing of a
significant amount of work. Clearly, it would be useful if we could design protocols that
prevent cascading rollbacks. One way to achieve this with two-phase locking is to leave
the release of alllocks until the end of the transaction, as in the previous examples. In this
way, the problem illustrated here would not occur, as T
15
would not obtain its exclusive
lock until after T
14
had completed the rollback. This is called rigorous 2PL . It can be
shown that with rigorous 2PL, transactions can be serialized in the order in which they
commit. Another variant of 2PL, called strict 2PL, only holds exclusive lock s until the end
of the transaction. Most database systems implement one of these two variants of 2PL.