Em sistemas gerenciadores de banco de dados, um deadlock oco...

Próximas questões
Com base no mesmo assunto
Q2172679 Banco de Dados
Em sistemas gerenciadores de banco de dados, um deadlock ocorre quando uma transação espera por dados que estão sendo utilizados por outra transação e ela espera por dados que estão sendo utilizados pela primeira. Para evitar deadlocks, os SGBDs podem usar um protocolo de bloqueio em duas fases. Analise as assertivas abaixo e assinale a alternativa correta.
I. A fases do protocolo de bloqueio em duas fases são: fase de expansão (onde os bloqueios são adquiridos) e fase de encolhimento (onde os bloqueios são liberados). II. O protocolo de bloqueio em duas fases é utilizado para garantir o escalonamento serializável das transações. III. A primeira operação de unlock dá início à fase de expansão.
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: C - Apenas I e II estão corretas.

Vamos discutir o assunto relacionado à questão para que você possa entender melhor o conceito e o motivo da alternativa C ser a correta. O tema abordado aqui é a prevenção de deadlocks em Sistemas de Gerenciamento de Bancos de Dados (SGBDs), que é uma situação onde duas ou mais transações ficam bloqueadas indefinidamente, cada uma esperando que a outra libere um recurso.

O protocolo de bloqueio em duas fases (2PL - Two-Phase Locking) é uma estratégia para evitar deadlocks e garantir a consistência nas transações do banco de dados. Como o nome sugere, esse protocolo funciona em duas fases distintas:

  • Fase de expansão (growing phase): Nesta fase, os bloqueios são adquiridos e não liberados. Uma transação pode bloquear recursos adicionais conforme necessário, mas uma vez que ela libera um bloqueio, ela não pode obter novos bloqueios.
  • Fase de encolhimento (shrinking phase): Após adquirir todos os bloqueios necessários, a transação entra na fase de encolhimento, onde bloqueios podem ser liberados, mas não mais adquiridos.

Essa estratégia ajuda a garantir um escalonamento serializável, o que significa que, mesmo com transações sendo processadas simultaneamente (concorrentemente), o resultado final é o mesmo que seria se as transações fossem processadas uma após a outra, em série.

Agora, vamos justificar as assertivas:

I. Esta assertiva está correta. Ela descreve exatamente as duas fases do protocolo de bloqueio em duas fases: a fase de expansão e a fase de encolhimento.

II. Esta assertiva também está correta. O protocolo de bloqueio em duas fases é utilizado para garantir o escalonamento serializável, que é um dos objetivos principais na prevenção de deadlocks e na manutenção da integridade do banco de dados.

III. Esta assertiva está incorreta. A primeira operação de unlock (liberação de um bloqueio) na verdade marca o fim da fase de expansão e o início da fase de encolhimento. Ao liberar um bloqueio, a transação demonstra que não irá adquirir novos bloqueios e, portanto, está pronta para começar a liberar os bloqueios existentes.

Portanto, a alternativa C é a correta, já que apenas as assertivas I e II estão corretas e a assertiva III está incorreta.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Unlock so ocorre na fase de encolhimento

Gabarito C

I) Fase de Crescimento e Encolhimento

II) Sim, para tentar garantir uma transação com os dados consistentes, sem ocorrer problemas de deadlocks ou de leitura fantasma, atualização perdida ....

III) unlock = fase de encolhimento

c-

1° unlock -> encolher

expansao inicia assim q transação começa a liberar locks

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo