Pular para o conteúdo principal

Questão de Banco de Dados — Oracle — FGV 2024

Banco de DadosOracle
Código
fg076990
Banca
FGV
Órgão
CGE-PB
Ano
2024
Nível
Superior
Cargo
Auditor de Contas Públicas - Auditoria de Tecnologia da Informação
Na operação normal de um banco de dados relacional, as transações que alteram dados podem incluir os comandos commit e rollback.O mecanismo usualmente utilizado nos gerenciadores de bancos de dados para evitar o dirty read, enquanto a transação não for encerrada, é conhecido como:
  1. ATrigger;
  2. BShared lock;
  3. CExclusive lock;
  4. DTwo-phase commit;
  5. EThree-phase commit.
Revelar gabarito e comentário

GabaritoC — Exclusive lock;

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”.

Controle de Concorrência: Prevenção de Dirty Read

Gabarito: letra C. O mecanismo que impede a leitura suja (dirty read) é o bloqueio exclusivo (exclusive lock): enquanto uma transação mantém esse bloqueio sobre os dados que está alterando, nenhuma outra transação pode ler (ou escrever) esses dados, evitando que leia valores não confirmados. Esse é o princípio básico do nível de isolamento read committed e superiores.

A banca testa o conhecimento sobre os mecanismos de controle de concorrência em SGBDs relacionais. A leitura suja ocorre quando uma transação lê dados que ainda não foram confirmados (e que podem ser revertidos). Para evitá-la, o SGBD utiliza bloqueios exclusivos nos dados sendo modificados. Vamos analisar cada alternativa:

Mecanismo

Função Principal

Relação com Dirty Read

Contexto de Uso

Trigger

Automação de ações em eventos DML

Nenhuma

Execução de procedures em INSERT/UPDATE/DELETE

Shared lock

Permite leitura concorrente, bloqueia escrita

Não previne (pode ler dados sujos)

Controle de concorrência para leitura

Exclusive lock

Bloqueia leitura e escrita por outras transações

Previne (impede leitura de dados não confirmados)

Controle de concorrência para escrita

Two-phase commit

Garante atomicidade em transações distribuídas

Nenhuma

Transações entre múltiplos nós

Three-phase commit

Protocolo distribuído com tolerância a falhas

Nenhuma

Transações distribuídas avançadas

Controle de concorrência
  • 1Bloqueios
    • Compartilhado (shared lock)
      • Permite leitura simultânea
      • Não evita dirty read
    • Exclusivo (exclusive lock)
      • Impede leitura suja
      • Bloqueia leitura e escrita
  • 2Protocolos distribuídos
    • Two-phase commit
    • Three-phase commit
  • 3Automação
    • Trigger
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Trigger é um mecanismo de automação que executa ações (procedures) em resposta a eventos de banco de dados (INSERT, UPDATE, DELETE). Não está relacionado ao controle de concorrência nem à prevenção de dirty reads.

Alternativa B — ❌ Incorreta

Shared lock (bloqueio compartilhado) permite que várias transações leiam o mesmo dado simultaneamente, mas impede escritas concorrentes. No entanto, não evita dirty reads por si só: se uma transação está escrevendo com um bloqueio exclusivo, a leitura é bloqueada; mas se o bloqueio compartilhado for obtido antes da escrita, pode ler dados sujos. O mecanismo que realmente previne dirty reads é o bloqueio exclusivo, não o compartilhado.

Alternativa C — ✅ Correta ⟵ GABARITO

Exclusive lock (bloqueio exclusivo) é o mecanismo padrão para evitar dirty reads. Quando uma transação adquire um bloqueio exclusivo sobre um dado, nenhuma outra transação pode ler ou modificar esse dado até que a transação libere o bloqueio (geralmente ao confirmar ou desfazer). Isso garante que dados não confirmados nunca sejam lidos por outras transações.

Alternativa D — ❌ Incorreta

Two-phase commit é um protocolo usado em transações distribuídas para garantir atomicidade entre múltiplos nós. Não é um mecanismo de controle de concorrência local e não tem relação direta com dirty reads.

Alternativa E — ❌ Incorreta

Three-phase commit é uma extensão do two-phase commit, também para transações distribuídas, que adiciona um terceiro passo para lidar com falhas. Igualmente, não se aplica ao contexto de prevenção de dirty reads em um único banco de dados.

NÃO CAIA NESSA!

A banca explora a confusão entre shared lock e exclusive lock. Muitos candidatos associam "impedir leitura" com compartilhamento, mas a chave está na exclusividade: apenas o bloqueio exclusivo impede que outros leiam dados não confirmados. Lembre-se: dirty read é evitado bloqueando a leitura dos dados sendo modificados, o que requer exclusividade.

Gabarito: letra C — exclusive lock é o mecanismo correto para evitar dirty reads.

Link permanente: /questoes/fg076990