Acerca das tecnologias que atendem a PDPJ-Br, julgue o próxi...
O banco de dados PostgreSQL possui um tratamento automático para resolver situações de deadlock, embora seja difícil prever qual das transações conflitantes será interrompida.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é C - certo.
Vamos agora entender o motivo dessa alternativa ser a correta.
O PostgreSQL é um banco de dados relacional avançado que implementa diversos mecanismos de controle de concorrência, um dos quais é a detecção e resolução de deadlocks.
Deadlock ocorre quando duas ou mais transações se bloqueiam mutuamente, esperando que a outra libere recursos, resultando em um impasse onde nenhuma transação pode prosseguir.
O PostgreSQL possui um mecanismo automático para identificar e resolver esses deadlocks. Quando o sistema detecta um deadlock, ele escolhe uma das transações envolvidas para ser interrompida (abortada), permitindo que as outras continuem. Isso é feito para garantir que o banco de dados não entre em um estado de inatividade contínua.
No entanto, o PostgreSQL não especifica qual transação será interrompida. A escolha é feita com base em critérios internos, que podem incluir fatores como o tempo de execução da transação e ordem de chegada. Portanto, é difícil prever qual transação será abortada em um cenário de deadlock, mas o importante é saber que o mecanismo de detecção e resolução está em funcionamento.
Para esclarecer as alternativas:
C - certo: De fato, o PostgreSQL possui um tratamento automático para resolver situações de deadlock. A imprevisibilidade sobre qual transação será interrompida é característica desse processo, validando a afirmativa.
E - errado: Essa alternativa seria incorreta porque contradiz a funcionalidade do PostgreSQL que efetivamente detecta e resolve deadlocks automaticamente.
Gostou do comentário? Deixe sua avaliação aqui embaixo!
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
Certo.
"O PostgreSQL possui um mecanismo robusto para detectar e resolver situações de deadlock de forma automática. Quando duas ou mais transações entram em um estado de espera mútua, o sistema identifica esse impasse e, para restabelecer a consistência, aborta uma das transações envolvidas.
A escolha da transação a ser abortada é, de fato, indeterminística. Isso se dá por diversos motivos:
- Complexidade dos Grafos de Espera: À medida que o número de transações e bloqueios aumenta, o grafo de espera (uma representação visual das dependências entre as transações) se torna cada vez mais complexo. Identificar a transação "culpada" por iniciar o deadlock pode ser computacionalmente caro e, em alguns casos, até mesmo impossível.
- Custos de Abortar uma Transação: O custo de abortar uma transação varia dependendo do trabalho já realizado e das alterações que precisam ser revertidas. Escolher a transação mais "barata" de abortar pode ser difícil de quantificar.
- Equidade: Para evitar que uma mesma transação seja sempre a vítima de um deadlock, os algoritmos de detecção e resolução tendem a escolher aleatoriamente entre as transações envolvidas."
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo