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:
ATrigger;
BShared lock;
CExclusive lock;
DTwo-phase commit;
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.