Questão de Banco de Dados — Transações (Locks, ACID, etc.) — CESPE / CEBRASPE 2025
- Código
- ce417232
- Banca
- CESPE / CEBRASPE
- Órgão
- PC DF
- Ano
- 2025
- Cargo
- GAAPC ( )
- CCerto
- EErrado
GabaritoC — Certo
Gabarito: Certo. A afirmação está correta porque o controle de transações, materializado pelas propriedades ACID (Atomicidade, Consistência, Isolamento e Durabilidade), é um mecanismo fundamental, mas não é, por si só, suficiente para garantir a recuperação total após qualquer falha nem para eliminar todos os problemas de concorrência entre transações simultâneas. Essas garantias dependem de uma combinação de técnicas de controle de concorrência (como locks) e de protocolos de recuperação (como logs), que atuam em conjunto com as propriedades ACID.
O enunciado aborda um ponto central na teoria de bancos de dados: a relação entre o controle de transações e a garantia de segurança, integridade e recuperação dos dados. Para entender por que a afirmação está correta, é preciso compreender o que são as propriedades ACID e qual o papel de cada uma delas, bem como as limitações inerentes a qualquer sistema que lida com concorrência e falhas.
As propriedades ACID são o alicerce do processamento de transações em um SGBD. Elas definem as garantias que uma transação deve oferecer para que o banco de dados permaneça em um estado consistente. Vamos detalhar cada uma:
Atomicidade: Garante que uma transação seja tratada como uma unidade indivisível. Ou seja, ou todas as suas operações são executadas com sucesso (commit), ou nenhuma delas é aplicada (rollback). Isso impede que o banco de dados fique em um estado intermediário e inconsistente devido a uma falha no meio da transação.
Consistência: Assegura que uma transação leve o banco de dados de um estado consistente para outro estado consistente, respeitando todas as regras e restrições de integridade definidas (como chaves primárias, estrangeiras e checks).
Isolamento: Garante que transações executadas concorrentemente não interfiram umas nas outras. O resultado final deve ser o mesmo que se as transações fossem executadas em sequência (serial). Isso é alcançado por meio de mecanismos de controle de concorrência, como os locks.
Durabilidade: Assegura que, uma vez que uma transação seja confirmada (commit), suas alterações sejam permanentes e persistam mesmo em caso de falha do sistema. Isso é garantido por meio de logs de transação (write-ahead logging) e técnicas de recuperação.
A afirmação do enunciado destaca que o controle de transações "não é suficiente" para assegurar a recuperação total e a ausência de inconsistências. Isso é verdade por vários motivos:
Recuperação após falhas: A durabilidade garante que os dados de transações confirmadas sejam persistidos, mas a recuperação de uma falha (como queda de energia ou crash do sistema) depende de mecanismos adicionais, como o uso de logs (registros de transações) e técnicas de checkpoint. O SGBD precisa ser capaz de refazer (redo) as transações confirmadas e desfazer (undo) as transações não confirmadas. O controle de transações fornece a base, mas a implementação da recuperação é um subsistema complexo.
Problemas de concorrência: O isolamento é a propriedade que trata da concorrência, mas ela não é absoluta. Diferentes níveis de isolamento (Read Uncommitted, Read Committed, Repeatable Read, Serializable) oferecem diferentes garantias e podem permitir fenômenos como leitura suja (dirty read), leitura não repetível (non-repeatable read) e fantasma (phantom read). Além disso, o controle de concorrência pode levar a problemas como deadlocks (impasse), que precisam ser gerenciados pelo SGBD. O controle de transações define as regras, mas a gestão prática da concorrência é um desafio contínuo.
Falhas de hardware e software: Nenhum sistema é imune a falhas de hardware (disco, memória) ou erros de software. O controle de transações não pode prever ou evitar todas as falhas possíveis; ele fornece os mecanismos para que, após uma falha, o banco de dados possa ser restaurado a um estado consistente.
Portanto, a afirmação está correta ao reconhecer que o controle de transações é necessário, mas não suficiente. Ele é um componente essencial, mas precisa ser complementado por outras técnicas e subsistemas para garantir a segurança e a integridade dos dados em cenários de falha e concorrência.
A banca pode tentar induzir o candidato a acreditar que o controle de transações (ACID) é uma solução completa e infalível. A pegadinha está em interpretar que, por existirem as propriedades ACID, o SGBD está automaticamente protegido contra qualquer falha ou problema de concorrência. Na prática, o ACID define as garantias, mas a implementação e a gestão de concorrência e recuperação são complexas e sujeitas a limitações. O candidato deve lembrar que o ACID é um conjunto de propriedades que o SGBD deve impor, mas que a eficácia depende de como essas propriedades são implementadas e de outros fatores, como o nível de isolamento escolhido e a robustez do subsistema de recuperação.
✅ CERTO. A afirmação está correta: o controle de transações, embora fundamental, não é suficiente para garantir a recuperação total após falhas nem para eliminar todos os problemas de concorrência. A segurança e a integridade dos dados dependem de uma combinação de técnicas de controle de concorrência, protocolos de recuperação e gerenciamento adequado de falhas.
Gabarito: Certo.
Link permanente: /questoes/ce417232