Questão de Banco de Dados — Transações (Locks, ACID, etc.) — VUNESP 2023
- Código
- vu196271
- Banca
- VUNESP
- Órgão
- Pref Peruíbe
- Ano
- 2023
- Cargo
- Ana Sis (Peruíbe)
- Aconsistência.
- Batomicidade.
- Cisolamento.
- Ddurabilidade.
- Eidempotência.
GabaritoB — atomicidade.
Gabarito: letra B. A propriedade descrita no enunciado — executar todas as operações de uma transação em caso de sucesso, ou nenhuma delas em caso de falha — é a atomicidade, o "tudo ou nada" das transações em bancos de dados. As demais propriedades ACID (consistência, isolamento e durabilidade) tratam de aspectos distintos, e a idempotência nem sequer faz parte do acrônimo ACID.
Uma transação é uma unidade lógica de trabalho, composta por várias operações sobre os dados (leituras, inserções, atualizações, exclusões). O exemplo clássico é a transferência bancária: debitar R$ 100 da conta A e creditar R$ 100 na conta B são duas operações que, juntas, formam uma única transação. A atomicidade garante que essas operações sejam tratadas como um bloco indivisível: ou todas são executadas com sucesso (commit), ou, se qualquer uma falhar, todas são desfeitas (rollback), retornando o banco ao estado anterior. Jamais pode ocorrer o débito sem o crédito, ou vice-versa.
A responsabilidade por garantir a atomicidade é do subsistema de recuperação de transações do SGBD, que utiliza mecanismos como logs para desfazer (rollback) ou confirmar (commit) as operações. É importante distinguir a atomicidade das outras propriedades ACID:
Propriedade | O que garante | Responsável no SGBD |
|---|---|---|
Atomicidade | Tudo ou nada: a transação é indivisível | Subsistema de recuperação |
Consistência | O banco vai de um estado válido a outro, respeitando regras e restrições | Programador / módulo de integridade |
Isolamento | Transações simultâneas não interferem entre si | Subsistema de controle de concorrência |
Durabilidade | Efeitos de transações confirmadas são permanentes | Subsistema de recuperação |
A pegadinha desta questão é justamente a confusão entre atomicidade e consistência. A consistência trata do respeito às regras de integridade (chaves, restrições, unicidade), enquanto a atomicidade trata da indivisibilidade da execução. O enunciado fala explicitamente em "executadas por completo" ou "nenhuma dessas operações irá ocorrer" — isso é a definição literal de atomicidade, o "tudo ou nada".
Guarde a fronteira: atomicidade = indivisibilidade da execução (tudo ou nada); consistência = validade do estado (respeito às regras). É exatamente nessa distinção que as alternativas se separam.
A consistência garante que a transação leve o banco de dados de um estado consistente para outro, respeitando todas as regras e restrições de integridade (chaves estrangeiras, unicidade, checagem de valores). Não trata da execução completa ou parcial das operações, mas da validade do estado resultante. O enunciado não menciona regras ou restrições — fala de execução integral ou nenhuma, o que é atomicidade.
A atomicidade é exatamente a propriedade descrita: a transação é uma unidade lógica indivisível, executada por completo (commit) ou não executada (rollback em caso de falha). O texto do enunciado — "executadas por completo (em caso de sucesso), ou então que nenhuma dessas operações irá ocorrer (em caso de falha)" — é a definição clássica de atomicidade, o princípio do "tudo ou nada".
O isolamento garante que transações executadas simultaneamente não interfiram umas nas outras, de modo que uma transação não visualize resultados parciais de outra em andamento. É uma propriedade de concorrência, não de execução integral ou parcial de uma única transação. O enunciado não trata de transações simultâneas, mas da indivisibilidade de uma transação individual.
A durabilidade garante que os efeitos de uma transação confirmada (commit) sejam permanentes, persistidos em armazenamento estável, e somente possam ser desfeitos por uma transação subsequente. Não trata da execução completa ou parcial das operações, mas da persistência dos resultados após a confirmação. O enunciado fala de execução, não de persistência.
Idempotência é um conceito de sistemas distribuídos e APIs: uma operação é idempotente se pode ser aplicada múltiplas vezes produzindo o mesmo resultado (ex.: definir um valor, em vez de incrementá-lo). Não faz parte das propriedades ACID de transações em bancos de dados e não tem relação com a execução integral ou parcial descrita no enunciado.
Gabarito: letra B — a propriedade descrita é a atomicidade, o "tudo ou nada" das transações ACID.
Link permanente: /questoes/vu196271