Em sistemas de gerenciamento de bancos de dados, o Controle de Concorrência Multiversão (MVCC) é uma técnica utilizada para gerenciar transações concorrentes de maneira eficiente. A respeito do funcionamento do MVCC, assinale a afirmativa correta.
- A)Elimina a necessidade de mecanismos de controle de concorrência e integridade.
Errada: o MVCC não elimina controle de concorrência nem integridade, apenas muda a forma de tratar acessos simultâneos.
- B)Garante que uma transação possa modificar dados somente se nenhuma outra transação tiver lido esses dados.
Errada: a lógica do MVCC não depende de impedir escrita porque alguém leu; ele trabalha com versões, não com essa proibição absoluta.
- C)Requer que todas as transações sejam executadas sequencialmente para manter a consistência dos dados.
Errada: o MVCC existe justamente para permitir concorrência, e não para obrigar execução sequencial das transações.
- D)Permite que existam múltiplas versões dos registros, possibilitando leituras consistentes sem bloquear escritas.
Certa: o MVCC mantém múltiplas versões dos registros para permitir leituras consistentes sem bloquear as escritas.
- E)Usa bloqueios de leitura em nível de registro, assegurando que apenas uma transação possa acessar um registro por vez.
Errada: isso descreve bloqueio tradicional de leitura em nível de registro, não MVCC.
Gabarito: D
O MVCC, ou Controle de Concorrência Multiversão, é uma técnica usada para reduzir bloqueios e deixar o banco mais “respirável” quando várias transações trabalham ao mesmo tempo. A ideia é simples e elegante: em vez de sobrescrever imediatamente um dado, o sistema pode manter versões diferentes do mesmo registro, cada uma ligada a um momento de leitura ou escrita. Na prática, isso ajuda muito porque uma transação pode ler uma versão estável dos dados enquanto outra transação faz alterações em paralelo. Assim, o leitor não precisa ficar esperando o escritor terminar, e o escritor também não trava o leitor. É por isso que o MVCC é tão associado a leituras consistentes com menos bloqueio. A alternativa correta é a letra D porque descreve exatamente esse funcionamento: múltiplas versões dos registros permitem leituras consistentes sem bloquear escritas. Esse é o coração do MVCC. Em muitos SGBDs modernos, essa lógica aparece combinada com controle de isolamento e timestamps, justamente para preservar consistência sem transformar o banco numa fila única de espera. As demais alternativas tentam confundir você com ideias de bloqueio total, execução sequencial ou regras absolutas de acesso. O MVCC não elimina controle de concorrência, nem obriga transações a rodarem uma de cada vez. Ele faz o oposto do que as pegadinhas sugerem: organiza a concorrência com versões, e não com paralisação geral.