Questão de Banco de Dados — SGBD - Sistema de Gerenciamento de Banco de Dados — Quadrix 2025
- Código
- qg594975
- Banca
- Quadrix
- Órgão
- CFO
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista de Infraestrutura
- CCerto
- EErrado
GabaritoC — Certo
Gabarito: CERTO (letra C). O MVCC (Multiversion Concurrency Control) é uma técnica de controle de concorrência que permite alta disponibilidade e desempenho em sistemas transacionais, pois leituras não bloqueiam escritas e vice-versa, mantendo a consistência por meio de versões dos dados. A afirmação está correta.
O controle de concorrência é um dos pilares dos SGBDs, responsável por garantir que transações simultâneas não interfiram umas nas outras, preservando a consistência dos dados. O MVCC é uma das abordagens mais modernas e eficientes para esse controle, adotada por SGBDs como PostgreSQL, Oracle e MySQL (InnoDB).
A ideia central do MVCC é que cada transação enxerga uma "fotografia" (snapshot) consistente do banco de dados em um determinado momento. Em vez de bloquear linhas que estão sendo lidas ou escritas, o SGBD mantém múltiplas versões de cada registro. Quando uma transação lê um dado, ela vê a versão mais recente que era válida no início da transação. Quando uma transação escreve, ela cria uma nova versão, sem descartar as anteriores imediatamente. Isso permite que leituras e escritas ocorram simultaneamente sem conflito, aumentando a concorrência e, consequentemente, a disponibilidade do sistema.
A consistência é preservada porque o SGBD garante que cada transação opere sobre um snapshot consistente, e o isolamento entre transações é mantido. O MVCC é uma implementação prática do isolamento, uma das propriedades ACID das transações. As propriedades ACID (Atomicidade, Consistência, Isolamento e Durabilidade) são fundamentais para garantir a confiabilidade das transações em bancos de dados.
A principal vantagem do MVCC é que ele reduz a necessidade de bloqueios (locks), que são caros e podem causar deadlocks e baixa concorrência. Em sistemas de alta disponibilidade, onde o tempo de resposta e a capacidade de processar muitas transações simultâneas são críticos, o MVCC é uma solução eficaz.
No entanto, é importante notar que o MVCC não elimina completamente a necessidade de bloqueios. Escritas concorrentes na mesma linha ainda precisam ser serializadas, e o SGBD pode usar bloqueios ou outras técnicas (como OCC - Optimistic Concurrency Control) para resolver conflitos. Mas, para o cenário típico de leitura intensa, o MVCC oferece um ganho significativo de desempenho e disponibilidade.
A banca explora aqui a relação entre concorrência, disponibilidade e consistência. O candidato pode ser tentado a marcar "Errado" por pensar que concorrência e consistência são antagônicas, mas o MVCC demonstra que é possível conciliar ambos.
A afirmação está correta. O MVCC permite alta disponibilidade em sistemas transacionais sem comprometer a consistência. Isso é alcançado porque:
Leituras não bloqueiam escritas: uma transação de leitura não precisa esperar que uma escrita termine, pois ela lê uma versão consistente dos dados.
Escritas não bloqueiam leituras: uma transação de escrita não bloqueia leituras, pois ela cria uma nova versão, e as leituras continuam vendo a versão antiga.
Consistência preservada: cada transação vê um snapshot consistente, e o isolamento é garantido.
Essa é a essência do MVCC, que é amplamente utilizado em SGBDs modernos para maximizar a concorrência e a disponibilidade.
Gabarito: CERTO (letra C).
Link permanente: /questoes/qg594975