O que é o protocolo de bloqueio de duas fases (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
Agora, o que é bloqueio de fase estrito?
Aqui, uma transação deve manter todos os seus bloqueios exclusivos até que seja confirmada/abortada.
Mas, o que é 2PL rigoroso?
O bloqueio de duas fases rigoroso é ainda mais rigoroso:aqui todos os bloqueios são mantidos até o commit/abort. Neste protocolo, as transações podem ser serializadas na ordem em que são confirmadas.
Muito mais profundo:
2PL estrito:
O mesmo que 2PL, mas mantém todos os bloqueios exclusivos até que a transação já tenha sido confirmada ou abortada com sucesso. – Garante a capacidade de recuperação sem cascata
2PL rigoroso:
O mesmo que Strict 2PL, mas mantém todos os bloqueios até que a transação já tenha sido confirmada ou abortada com sucesso. –É usado em ambientes dinâmicos onde os padrões de acesso a dados não são conhecidos de antemão.
Não há impasse. Além disso, uma transação mais jovem solicitando um item retido por uma transação mais antiga é abortada e reiniciada com o mesmo carimbo de data/hora, evitando a inanição.
Espero que as explicações acima claras com diagrama devem ter deixado você claro sobre o conceito e as vantagens do rigoroso sobre o outro.
Obrigado