Two Phase Locking

Da Wikipedia, l'enciclopedia libera.

Il protocollo two phase locking (2PL) assume che ogni transazione in esecuzione preveda due fasi principali. Nella prima fase i lock vengono acquisiti, nella seconda vengono rilasciati. Se tutte le transazioni rispettano il 2PL allora (si dimostra formalmente) uno schedule 2PL è conflict serializzabile. Il 2PL garantisce l'assenza di Deadlock in un sistema NON distribuito.

Di seguito due transazioni che rispettano il 2PL:

T1 T2
lock(p1)
read(p1)
lock(p1)
write(p1)
lock(p2)
unlock(p1)
read(p1)
write(p1)
lock(p2)
unlock(p1)
read(p2)
write(p2)
unlock(p2)
read(p2)
write(p2)
unlock(p2)

Come si può vedere dalla tabella, sia in T1 che in T2 i lock e gli unlock sono acquisiti e rilasciati secondo il 2PL.