Muitos SGBD’s modernos estão utilizando um mecanismo conhec...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Vamos analisar a questão sobre Controle de Concorrência de Versão Múltipla (MVCC) em SGBDs modernos.
A alternativa correta é a alternativa A.
A alternativa A está correta ao afirmar que um snapshot dos dados é gerado no início da transação. Isso significa que cada transação vê uma versão consistente dos dados à medida que eles eram no início da transação, o que reduz a necessidade de bloqueios de leitura e melhora o desempenho.
Agora, vamos entender por que as outras alternativas estão incorretas:
B - Esta alternativa menciona "threads de multiversão", o que não é um conceito aplicável ao MVCC. MVCC utiliza versões de dados para permitir que múltiplas transações leiam e escrevam dados simultaneamente, sem que uma transação bloqueie a outra.
C - Embora o MVCC possa ser utilizado em níveis de isolamento como "serializable", isso não melhora a concorrência exponencialmente. O nível serializable é o mais restritivo e pode, na verdade, reduzir a concorrência, uma vez que tenta garantir que as transações sejam executadas como se fossem serializadas.
D - "Dirty Read" refere-se à leitura de dados que foram modificados por outra transação ainda não confirmada, o que pode resultar em inconsistências. A técnica do MVCC evita "Dirty Reads" ao fornecer versões consistentes dos dados.
E - O principal objetivo do MVCC é melhorar a concorrência e a performance ao permitir múltiplas versões dos dados, mas não através de um esquema de pipeline dinâmico. O MVCC permite que transações leiam uma versão estável dos dados, enquanto outras transações podem modificar esses dados sem causar conflitos.
Portanto, a alternativa A é a que melhor descreve o funcionamento do MVCC, destacando a criação de snapshots para reduzir bloqueios e melhorar o desempenho.
Espero que esta explicação tenha esclarecido suas dúvidas sobre MVCC. Se precisar de mais alguma coisa, estarei à disposição!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
GABARITO: LETRA A
PostgreSQL mantém a consistência dos dados utilizando o modelo multiversão (Multiversion Concurrency Control, MVCC). Isto significa que ao consultar o banco de dados, cada transação enxerga um instantâneo (snapshot) dos dados (uma versão do banco de dados) conforme estes dados eram há algum tempo atrás, sem levar em consideração o estado corrente dos dados subjacentes.
O método MVCC tem uma abordagem diferente:
Cada processo conectado ao banco de dados enxerga uma cópia temporária do banco de dados no instante do tempo que é execuível. Qualquer alteração que esteja sendo feita em determinado momento por um processo, não será vista pelos demais processos operando no banco de dados, até que as alterações tenham sido concluídas (ou, em termos de banco de dados: até que a transação tenha sido confirmada).
Quando um banco de dados com MVCC precisar atualizar um determinado dado, ele não irá sobrescrever este dado com o novo dado, mas ao contrário, marcar o dado antigo como obsoleto e adicionar a versão mais recente em outro lugar.
Desta forma, existem várias versões armazenadas, mas apenas uma é a última. Isso permite que os processos (leitores do banco dados) acessem os dados que estavam lá quando eles começaram a ler, mesmo que este dado tenha sido modificado ou excluído por outra processo.
O snapshot ou “cópia instantânea” é o registro do estado de um arquivo, aplicação ou sistema em um certo ponto no tempo.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo