Questão de Banco de Dados — Transações (Locks, ACID, etc.) — CESPE / CEBRASPE 2025
Banco de Dados›Transações (Locks, ACID, etc.)
Código
ce417319
Banca
CESPE / CEBRASPE
Órgão
BANRISUL
Ano
2025
Cargo
Tec TI ( )
Para a garantia da consistência e da confiabilidade dos dados em um sistema de gerenciamento de banco de dados, as transações devem atender às propriedades ACID. Assim, na situação em que uma única transação envolva, simultaneamente, o débito de R$ 100 na conta corrente e o crédito do mesmo valor na conta poupança de um mesmo correntista, caso ocorra falha de sistema antes da confirmação (commit) da transação, a garantia de que nenhum débito/crédito será efetivado é assegurada
Apelos bloqueios.
Bpela atomicidade.
Cpela consistência.
Dpela durabilidade.
Epelo isolamento.
Revelar gabarito e comentário▾
GabaritoB — pela atomicidade.
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”.
Propriedades ACID: atomicidade e a garantia de tudo-ou-nada
Gabarito: letra B. A garantia de que nenhum débito/crédito será efetivado em caso de falha antes do commit é assegurada pela atomicidade, que trata a transação como uma unidade indivisível: ou todas as operações são executadas com sucesso (commit) ou nenhuma delas é refletida no banco (rollback). Essa é a propriedade que impede resultados parciais, exatamente o cenário descrito no enunciado.
A atomicidade é uma das quatro propriedades ACID que regem as transações em sistemas de gerenciamento de banco de dados (SGBD). O acrônimo ACID vem do inglês Atomicity, Consistency, Isolation, Durability — em português, Atomicidade, Consistência, Isolamento e Durabilidade. Cada uma cuida de um aspecto da confiabilidade: a atomicidade garante o "tudo ou nada"; a consistência assegura que o banco passe de um estado válido a outro válido, respeitando regras de integridade; o isolamento impede que transações concorrentes interfiram umas nas outras; e a durabilidade garante que os efeitos de uma transação confirmada sejam permanentes, mesmo após falhas.
No caso concreto da transferência entre conta corrente e conta poupança, a transação envolve duas operações: debitar R$ 100 da conta corrente e creditar R$ 100 na conta poupança. Se o sistema falhar antes do commit, a atomicidade exige que o SGBD execute um rollback, desfazendo qualquer operação parcialmente realizada. Assim, o saldo de ambas as contas permanece exatamente como estava antes do início da transação — nem o débito nem o crédito são efetivados. Isso é o que se chama de comportamento "tudo ou nada": a transação é indivisível, e o banco de dados nunca reflete resultados parciais.
A responsabilidade por garantir a atomicidade é do subsistema de recuperação de transações do SGBD, que mantém um log (registro) das operações para permitir o desfazer em caso de falha. Já o isolamento é garantido pelo subsistema de controle de concorrência, que gerencia bloqueios (locks) e níveis de isolamento. A consistência é atribuída aos programadores e às restrições de integridade definidas no esquema. A durabilidade é garantida pelo subsistema de recuperação, que persiste os dados em armazenamento não volátil.
A pegadinha desta questão está em confundir atomicidade com isolamento ou com os bloqueios (locks). Os bloqueios são um mecanismo de controle de concorrência que garante o isolamento entre transações simultâneas — não têm relação com o desfazer de uma transação que falhou. O isolamento, por sua vez, trata da não interferência entre transações concorrentes, não do comportamento da transação em caso de falha. A atomicidade é a única propriedade que responde diretamente à pergunta: se a transação não foi confirmada, nada é efetivado.
Guarde a fronteira entre as propriedades: atomicidade = tudo ou nada (falha → rollback); consistência = respeito às regras de integridade; isolamento = transações concorrentes não interferem; durabilidade = efeitos permanentes após o commit. É exatamente nessa fronteira que as alternativas se dividem.
Antes do commit
Após o commit
Sucesso
Atomicidade: rollback (nada é efetivado)
Durabilidade: efeitos permanentes
Falha
Isolamento: concorrência não interfere
Consistência: estado válido
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Os bloqueios (locks) são um mecanismo do subsistema de controle de concorrência, usado para garantir o isolamento entre transações simultâneas — por exemplo, impedindo que duas transações alterem o mesmo registro ao mesmo tempo. Eles não têm relação com o desfazer de uma transação que falhou antes do commit. A garantia de que nenhuma operação parcial será efetivada é da atomicidade, não dos bloqueios.
Alternativa B — ✅ Correta ⟵ GABARITO
A atomicidade trata a transação como uma unidade indivisível: ou todas as operações são executadas com sucesso (commit) ou nenhuma é refletida no banco (rollback). No cenário do enunciado, se a falha ocorre antes do commit, o SGBD executa o rollback, desfazendo o débito e o crédito — nenhum dos dois é efetivado. É exatamente a garantia de "tudo ou nada" que a questão descreve.
Alternativa C — ❌ Incorreta
A consistência garante que a transação leve o banco de dados de um estado consistente a outro consistente, respeitando regras de integridade (chaves, restrições, triggers). Ela não trata do desfazer de operações em caso de falha — isso é papel da atomicidade. A consistência seria relevante, por exemplo, se a transferência violasse uma restrição de saldo mínimo, mas não é o caso da falha antes do commit.
Alternativa D — ❌ Incorreta
A durabilidade garante que os efeitos de uma transação confirmada (commit) sejam permanentes, persistindo mesmo após falhas de hardware ou software. Ela só se aplica após o commit — no cenário da questão, a transação não foi confirmada, então a durabilidade não tem o que garantir. A propriedade que impede a efetivação de operações não confirmadas é a atomicidade.
Alternativa E — ❌ Incorreta
O isolamento garante que transações concorrentes não interfiram umas nas outras, ou seja, que uma transação não veja resultados parciais de outra em andamento. Ele é relevante para cenários de concorrência, mas não para o caso de uma única transação que falha antes do commit. A garantia de que nenhuma operação da própria transação será efetivada é da atomicidade.
Gabarito: letra B — a atomicidade assegura que, em caso de falha antes do commit, nenhum débito/crédito seja efetivado, pois a transação é tratada como uma unidade indivisível (tudo ou nada).