Questão de Banco de Dados — Transações (Locks, ACID, etc.) — FGV 2024
- Código
- fg165284
- Banca
- FGV
- Órgão
- EPE
- Ano
- 2024
- Cargo
- AGC ( )
- A2 – 1 – 3 – 3.
- B1 – 3 – 2 – 2.
- C2 – 2 – 1 – 3.
- D2 – 1 – 3 – 2.
- E3 – 2 – 1 – 1.
GabaritoD — 2 – 1 – 3 – 2.
Gabarito: letra D. A associação correta é Atomicidade → Subsistema de recuperação (2), Consistência → Programadores ou módulo do SGBD que impõe restrições de integridade (1), Isolamento → Subsistema de controle de concorrência (3), Durabilidade → Subsistema de recuperação (2), resultando na sequência 2 – 1 – 3 – 2. A chave da questão está em saber que a atomicidade e a durabilidade são garantidas pelo subsistema de recuperação, enquanto a consistência depende das regras de integridade e o isolamento é papel do controle de concorrência.
As propriedades ACID (Atomicidade, Consistência, Isolamento e Durabilidade) são os pilares que garantem a confiabilidade das transações em um banco de dados. Cada uma delas é assegurada por um componente específico do SGBD ou pelo próprio programador, e é exatamente essa divisão de responsabilidades que a questão cobra.
Atomicidade é a propriedade 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). A responsabilidade por essa garantia é do subsistema de recuperação, que mantém um log (registro) das operações e, em caso de falha, desfaz os efeitos parciais da transação. Por exemplo, em uma transferência bancária, se o sistema falhar após debitar a conta de origem mas antes de creditar a de destino, o subsistema de recuperação deve desfazer o débito para restaurar a consistência.
Consistência assegura que a transação leve o banco de dados de um estado consistente para outro, respeitando todas as regras de integridade definidas, como chaves únicas, restrições (constraints), triggers e operações em cascata. Essa propriedade é garantida pelos programadores que escrevem o código da aplicação e pelo módulo do SGBD que impõe restrições de integridade. O SGBD valida cada operação contra as regras definidas no esquema, rejeitando qualquer escrita que viole essas regras.
Isolamento garante que transações concorrentes não interfiram umas nas outras, produzindo o mesmo resultado que teriam se fossem executadas em sequência (serialização). Essa propriedade é implementada pelo subsistema de controle de concorrência, que utiliza mecanismos como locks (bloqueios) — compartilhados e exclusivos — para gerenciar o acesso simultâneo aos dados. Por exemplo, se duas transações tentam atualizar o mesmo registro ao mesmo tempo, o controle de concorrência serializa as operações para evitar conflitos.
Durabilidade garante que, uma vez confirmada (commit), as alterações da transação sejam permanentes e persistam mesmo em caso de falha do sistema. Essa propriedade também é responsabilidade do subsistema de recuperação, que grava as alterações em disco e utiliza o log para restaurar o estado do banco em caso de queda. Sem a durabilidade, uma transação confirmada poderia ser perdida em um desligamento inesperado.
A pegadinha desta questão está em associar a atomicidade e a durabilidade ao mesmo subsistema (recuperação), enquanto muitos candidatos tendem a atribuir a atomicidade ao controle de concorrência ou a durabilidade a outro componente. A distinção crucial é: recuperação lida com falhas (desfazer transações incompletas e persistir as confirmadas), enquanto controle de concorrência lida com o acesso simultâneo (isolamento).
A banca explora a confusão entre os papéis do subsistema de recuperação e do controle de concorrência. Muitos candidatos associam a atomicidade ao controle de concorrência, mas a atomicidade é garantida pela recuperação, que desfaz transações incompletas (rollback). Da mesma forma, a durabilidade também é papel da recuperação, que persiste as alterações confirmadas. O controle de concorrência cuida apenas do isolamento.
A sequência 2 – 1 – 3 – 3 atribui a durabilidade ao subsistema de controle de concorrência (3), o que está errado. A durabilidade é garantida pelo subsistema de recuperação (2), que persiste as alterações confirmadas em disco. O controle de concorrência é responsável apenas pelo isolamento.
A sequência 1 – 3 – 2 – 2 atribui a atomicidade aos programadores/módulo de integridade (1) e a consistência ao controle de concorrência (3), invertendo os papéis. A atomicidade é garantida pelo subsistema de recuperação (2), e a consistência é papel dos programadores/módulo de integridade (1).
A sequência 2 – 2 – 1 – 3 atribui a consistência ao subsistema de recuperação (2) e o isolamento aos programadores/módulo de integridade (1). A consistência é garantida pelos programadores/módulo de integridade (1), e o isolamento é papel do controle de concorrência (3).
A sequência 2 – 1 – 3 – 2 associa corretamente: Atomicidade → Subsistema de recuperação (2), Consistência → Programadores/módulo de integridade (1), Isolamento → Subsistema de controle de concorrência (3), Durabilidade → Subsistema de recuperação (2). Essa é a divisão clássica de responsabilidades das propriedades ACID.
A sequência 3 – 2 – 1 – 1 atribui a atomicidade ao controle de concorrência (3) e a durabilidade aos programadores/módulo de integridade (1). A atomicidade é garantida pelo subsistema de recuperação (2), e a durabilidade também é papel da recuperação (2), não dos programadores.
Gabarito: letra D
Link permanente: /questoes/fg165284