Questão de Banco de Dados — Transações (Locks, ACID, etc.) — VUNESP 2025
- Código
- vu222882
- Banca
- VUNESP
- Órgão
- TJM SP
- Ano
- 2025
- Cargo
- Ana BDJ ( )
- Acomposição.
- Bimposição.
- Cencolhimento.
- Dtransformação.
- Ecrescimento.
GabaritoE — crescimento.
Gabarito: letra E. No protocolo 2PL, a fase em que a transação pode obter bloqueios, mas não pode liberar nenhum, é a fase de crescimento (growing phase). A fase oposta, em que a transação pode liberar bloqueios mas não adquirir novos, é a fase de encolhimento (shrinking phase). Essa é a definição clássica do 2PL, presente em qualquer material de banco de dados.
O protocolo de bloqueio em duas fases (2PL – Two Phase Locking) é um mecanismo de controle de concorrência que garante a serializabilidade das transações, ou seja, que o resultado da execução concorrente seja equivalente a alguma execução serial. Ele opera em duas fases bem definidas:
Fase de crescimento (growing phase): a transação pode adquirir bloqueios (de leitura ou escrita) sobre os recursos de que precisa, mas não pode liberar nenhum bloqueio. Essa fase continua até que a transação tenha obtido todos os bloqueios necessários.
Fase de encolhimento (shrinking phase): inicia quando a transação libera seu primeiro bloqueio. A partir daí, ela pode liberar bloqueios que não são mais necessários, mas não pode adquirir novos bloqueios.
A lógica por trás dessa divisão é simples: enquanto a transação está "crescendo", ela está coletando os recursos de que precisa para executar; quando começa a "encolher", ela já tem tudo e só vai liberando o que não usa mais. Isso impede que uma transação libere um recurso e depois tente obtê-lo novamente, o que poderia quebrar a serializabilidade.
Um exemplo prático: imagine uma transação T1 que precisa atualizar duas contas bancárias, A e B. Na fase de crescimento, T1 solicita e obtém o bloqueio exclusivo sobre A e depois sobre B. Somente após obter todos os bloqueios é que T1 executa as operações e, ao final, entra na fase de encolhimento, liberando primeiro o bloqueio de B e depois o de A. Se T1 tentasse liberar o bloqueio de A antes de obter o de B, estaria violando o protocolo.
A pegadinha da banca aqui é justamente inverter os nomes das fases ou usar termos que não existem no protocolo. As alternativas A, B e D (composição, imposição, transformação) são termos inventados, sem relação com o 2PL. A alternativa C (encolhimento) é a fase oposta — nela a transação pode liberar, mas não obter bloqueios. A única que corresponde à descrição do enunciado é a crescimento.
A banca troca as fases do 2PL: o candidato que memorizou apenas os nomes pode confundir "crescimento" com "encolhimento". Lembre-se: na fase de crescimento a transação só obtém bloqueios; na fase de encolhimento ela só libera. O enunciado diz "pode obter, mas não liberar" — isso é crescimento, não encolhimento.
Composição não é uma fase do protocolo 2PL. O termo não existe na literatura de controle de concorrência. A banca o incluiu apenas como distrator, sem relação com o funcionamento do protocolo.
Imposição também não é uma fase do 2PL. Não há qualquer referência a esse termo no contexto do protocolo de bloqueio em duas fases. É um distrator puro.
Encolhimento é a fase oposta à descrita no enunciado. Na fase de encolhimento (shrinking phase), a transação pode liberar bloqueios, mas não pode obter novos. O enunciado pede exatamente o contrário: "pode obter, mas não liberar". Portanto, está incorreta.
Transformação não é uma fase do protocolo 2PL. Assim como as alternativas A e B, é um termo inventado pela banca, sem fundamento técnico.
Crescimento é exatamente a fase descrita no enunciado. Na fase de crescimento (growing phase), a transação pode adquirir bloqueios sobre os recursos, mas não pode liberar nenhum. Essa fase se estende até que a transação tenha obtido todos os bloqueios de que necessita. É a definição literal do protocolo 2PL.
Gabarito: letra E
Link permanente: /questoes/vu222882