Questão nº 49
Questão de Tecnologia da Informação · FGV TRF1 2024 (nº 49)
Ana identificou que, em seu banco de dados, ocorria muita demora na execução de algumas transações específicas, que chegavam até a falhar algumas vezes. Ao efetuar uma análise, viu que não havia controle nas transações ocorridas. Como forma de garantir seus schedules estritos, Ana implementou um bloqueio em 2 fases rigoroso.
Esse bloqueio implementado por Ana fará com que:
- Auma transação bloqueie todos os itens que ela acessa antes que a transação inicie a execução;
- Bseja executado um downgrade do bloqueio ao se emitir uma operação read_lock(X), mesmo com a transação ainda em execução;
- Cuma transação T não libere nenhum de seus bloqueios exclusivos (gravação) até depois de confirmar ou abortar;
- Dseja gerado um rótulo de tempo, que será usado para garantir a serialização das transações;
- Euma transação T não libere nenhum de seus bloqueios (exclusivo ou compartilhado) até depois de confirmar ou abortar. (alternativa correta)
Resposta comentada
Gabarito Alternativa E
O Bloqueio em Duas Fases (2PL) é uma técnica de controle de concorrência que garante que as transações sejam executadas de forma serializável, ou seja, como se tivessem sido executadas uma após a outra, sem interferências. Na sua forma rigorosa (ou estrita, dependendo da terminologia), uma transação mantém todos os seus bloqueios até o fim.
(A) Incorreta: Esta alternativa descreve o Bloqueio em Duas Fases Conservador (ou Estático), onde todos os bloqueios são adquiridos antes do início da execução da transação. O Bloqueio em Duas Fases (mesmo o rigoroso/estrito) permite que os bloqueios sejam adquiridos dinamicamente durante a fase de crescimento.
(B) Incorreta: Um downgrade de bloqueio (por exemplo, de exclusivo para compartilhado) implica liberar o bloqueio exclusivo. No Bloqueio em Duas Fases Rigoroso/Estrito, nenhum bloqueio é liberado antes da transação confirmar ou abortar, para garantir a serialização estrita e evitar cascading rollbacks.
(C) Incorreta: Esta é a armadilha mais tentadora. Embora seja verdade que bloqueios exclusivos são mantidos até o fim no 2PL Rigoroso/Estrito, esta alternativa é incompleta. A definição mais abrangente e a que o gabarito oficial aponta para "bloqueio em 2 fases rigoroso" é que todos os bloqueios (exclusivos e compartilhados) são mantidos. Se apenas os exclusivos fossem mantidos, ainda haveria risco de outras transações lerem dados que foram escritos por uma transação que ainda não confirmou, mas já liberou seu bloqueio de leitura.
(D) Incorreta: A geração de rótulos de tempo (timestamps) é uma técnica de controle de concorrência baseada em timestamps, e não em bloqueios como o 2PL. São abordagens distintas.
(E) Correta: No Bloqueio em Duas Fases Rigoroso (ou Estrito, no sentido mais forte), uma transação T não libera nenhum de seus bloqueios (sejam eles exclusivos para escrita ou compartilhados para leitura) até que ela confirme (commit) ou aborte (rollback). Isso garante a serializabilidade estrita, prevenindo que outras transações leiam dados não confirmados e evitando o problema de cascading rollbacks (onde o aborto de uma transação causa o aborto de outras que leram seus dados).
Fonte: FGV TRF1 2024 Analista Judiciário - Suporte em TI (Caderno Tipo 1). Reproduzida para fins de estudo.