Pular para o conteúdo principal

Questão de Banco de Dados — SGBD - Sistema de Gerenciamento de Banco de Dados — FGV 2024

Banco de DadosSGBD - Sistema de Gerenciamento de Banco de Dados
Código
fg098543
Banca
FGV
Órgão
TJ-MS
Ano
2024
Nível
Superior
Cargo
Técnico de Nível Superior - Analista de Sistemas Computacionais - Analista de Suporte de TI
Edgar, DBA de uma multinacional, recebeu um e-mail do usuário A. Nele, o usuário informava que, ao executar uma transação em um registro na tabela de pessoal, obtinha valores incorretos. Pouco tempo depois, recebeu um e-mail do usuário B, no qual este relatava acessar o mesmo registro do usuário A e informava que, às vezes, os dados ficavam incorretos. Edgar identificou que as duas transações acessavam os mesmos itens do banco de dados e tinham problemas em suas serializações, o que tornava o valor do item incorreto.Edgar identificou um problema chamado:
  1. Aatualização perdida;
  2. Batualização temporária;
  3. Cresumo incorreto;
  4. Dleitura não repetitiva;
  5. Eleitura suja.
Revelar gabarito e comentário

GabaritoA — atualização perdida;

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Problemas de Concorrência em Banco de Dados

Gabarito: letra A. O cenário descrito — duas transações acessando o mesmo registro e, devido a problemas de serialização, resultando em valores incorretos — caracteriza o problema de atualização perdida (lost update). Nesse fenômeno, uma transação sobrescreve a atualização feita por outra transação sem considerar seu valor, fazendo com que a primeira alteração seja perdida. A banca testa o conhecimento dos problemas clássicos de concorrência em transações.

Problema de Concorrência

Descrição

Característica Principal

Relação com o Enunciado

Atualização Perdida (Gabarito)

Duas transações leem o mesmo valor; uma atualiza e a outra sobrescreve sem considerar a primeira alteração.

Perda de uma atualização devido à falta de serialização.

Duas transações acessam o mesmo registro e geram valores incorretos por problemas de serialização.

Atualização Temporária

Termo não consagrado; não se refere a um problema clássico de concorrência.

Não é um fenômeno padrão em banco de dados.

Não se aplica ao cenário descrito.

Resumo Incorreto

Uma transação calcula um agregado (SUM, COUNT) enquanto outras atualizam dados, gerando resultado inconsistente.

Envolve funções de agregação e dados em alteração.

O enunciado fala de duas transações alterando o mesmo registro, não de cálculos agregados.

Leitura Não Repetitiva

Uma transação lê o mesmo dado duas vezes e obtém valores diferentes devido a uma modificação confirmada entre as leituras.

Leituras diferentes do mesmo dado em momentos distintos.

O problema relatado é de atualizações concorrentes, não de leituras repetidas com valores diferentes.

Leitura Suja

Uma transação lê dados não confirmados (não commitados) de outra transação.

Leitura de dados temporários ou não persistidos.

O enunciado não menciona leitura de dados não commitados, mas sim valores incorretos por serialização.

Alternativa A — ✅ Correta ⟵ GABARITO

A atualização perdida ocorre quando duas transações leem o mesmo dado, uma delas o atualiza com base no valor lido, e a segunda, também com base no mesmo valor antigo, o atualiza novamente, aniquilando o efeito da primeira. No enunciado, os usuários A e B executam transações sobre o mesmo registro e obtêm valores incorretos, exatamente por falta de serialização adequada, que permitiria que uma transação esperasse a conclusão da outra. É o exemplo mais clássico de problema de concorrência.

Alternativa B — ❌ Incorreta

"Atualização temporária" não é um termo consagrado na teoria de transações. O problema descrito envolve concorrência com atualizações concorrentes, não algo temporário. O termo correto para o caso é "atualização perdida".

Alternativa C — ❌ Incorreta

"Resumo incorreto" (também chamado de "incorrect summary") ocorre quando uma transação calcula um agregado (ex.: SUM, COUNT) enquanto outras transações estão atualizando os dados, levando a um resultado inconsistente. O enunciado fala de duas transações acessando o mesmo registro e alterando valores, não de cálculos agregados.

Alternativa D — ❌ Incorreta

"Leitura não repetitiva" (non-repeatable read) acontece quando uma transação lê o mesmo dado duas vezes e obtém valores diferentes porque outra transação o modificou e confirmou entre as leituras. No caso, o problema relatado não é de leitura de um mesmo dado em momentos distintos, mas sim de atualizações concorrentes que geram valores incorretos.

Alternativa E — ❌ Incorreta

"Leitura suja" (dirty read) é quando uma transação lê dados ainda não confirmados (não commitados) de outra transação. O enunciado não menciona transações não confirmadas; fala de transações que acessam os mesmos itens e, por problemas de serialização, produzem valores incorretos, o que é típico de atualização perdida.

PEGA ESSA DICA!

Para distinguir os problemas de concorrência, lembre-se do acrônimo LU – NR – DR – PS (Lost Update, Non-repeatable Read, Dirty Read, Phantom). A atualização perdida envolve duas escritas concorrentes sem que uma veja a outra; a leitura suja envolve leitura de dados não commitados; a leitura não repetitiva envolve leitura repetida com diferença; e o problema fantasma (phantom) envolve inserção de novas tuplas.

Gabarito: letra A.

Link permanente: /questoes/fg098543