← Questões de Banco de Dados

Banco de Dados · FGV · 2024

Questão comentada de Banco de Dados

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:

Gabarito: C

Em banco de dados, a ideia de isolamento das transações existe para que uma não enxergue alterações ainda não confirmadas por outra. É exatamente isso que evita o chamado dirty read: ler dado “sujo”, ou seja, modificado por uma transação que ainda pode dar rollback. Enquanto a transação não termina, o SGBD costuma proteger os dados com bloqueios adequados. No caso da questão, o mecanismo usado para impedir que outra transação leia algo ainda não confirmado é o exclusive lock, também chamado de bloqueio exclusivo. Ele faz com que o recurso fique reservado para quem está alterando os dados, impedindo leituras indevidas e concorrência perigosa até o commit ou rollback. A lógica é simples: se você está mexendo no dado, ninguém lê esse dado no meio do caminho como se já fosse definitivo. Se outra transação pudesse ler antes do encerramento, ela correria o risco de trabalhar com um valor que depois desaparece com o rollback. Aí nasce o dirty read, e o banco tenta evitar essa confusão com bloqueios de exclusão. Por isso o gabarito é a letra C. Em teoria de SGBD, esse é o comportamento clássico de controle de concorrência por locks: o exclusive lock protege a escrita e impede leitura prematura do dado não confirmado.

Continue treinando

Questões relacionadas