Co to jest protokół blokowania dwufazowego (2PL)?
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
Co to jest ścisłe blokowanie fazy?
Tutaj transakcja musi posiadać wszystkie swoje wyłączne blokady, dopóki nie zostanie zatwierdzona/przerwana.
Ale co to za rygorystyczne 2PL?
Rygorystyczne blokowanie dwufazowe jest jeszcze bardziej rygorystyczne:tutaj wszystkie blokady są utrzymywane do zatwierdzenia/przerwania. W tym protokole transakcje mogą być serializowane w kolejności, w jakiej są zatwierdzane.
Dużo głębiej :
Ścisłe 2PL:
To samo co 2PL, ale utrzymuj wszystkie blokady na wyłączność, dopóki transakcja nie zostanie pomyślnie zatwierdzona lub przerwana. – Gwarantuje bezkaskadowe odzyskiwanie
Rygorystyczne 2PL:
To samo, co Strict 2PL, ale wstrzymaj wszystkie blokady, dopóki transakcja nie zostanie pomyślnie zatwierdzona lub przerwana. – Jest używany w dynamicznych środowiskach, w których wzorce dostępu do danych nie są wcześniej znane.
Nie ma impasu. Ponadto młodsza transakcja z żądaniem elementu posiadanego przez starszą transakcję jest przerywana i ponownie uruchamiana z tym samym znacznikiem czasu, co pozwala uniknąć głodu.
Mam nadzieję, że powyższe wyjaśnienia z diagramem musiały wyjaśnić Ci koncepcję i przewagi rygorystyczności nad innymi.
Dzięki