Vad är Two-Phase Locking (2PL) Protocol?
A transaction is two-phase locked if:
before reading x, it sets a read lock on x
before writing x, it sets a write lock on x
it holds each lock until after it executes the corresponding operation
after its first unlock operation, it requests no new locks
Vad är nu strikt faslåsning?
Här måste en transaktion hålla alla sina exklusiva lås tills den begår/avbryts.
Men, vad är rigorös 2PL?
Rigorös tvåfaslåsning är ännu strängare:här hålls alla lås tills commit/avbryt. I detta protokoll kan transaktioner serialiseras i den ordning som de genomförs.
Mycket djupare :
Strikt 2PL :
Samma som 2PL men håll alla exklusiva lås tills transaktionen redan har genomförts eller avbrutits. –Det garanterar kaskadlös återvinning
Rigorös 2PL :
Samma som Strict 2PL men håll alla lås tills transaktionen redan har genomförts eller avbrutits. –Det används i dynamiska miljöer där dataåtkomstmönster inte är kända från förhand.
Det finns inget dödläge. Dessutom avbryts en yngre transaktion som begär ett föremål som innehas av en äldre transaktion och startas om med samma tidsstämpel, svält undviks.
Jag hoppas att ovanstående tydliga förklaringar med diagram måste ha gjort dig tydlig om konceptet och fördelarna med rigorös framför den andra.
Tack