Para garantir o controle de concorrência e, consequentemente...
A respeito desse modelo não é correto afirmar que:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Resposta Correta: E
O modelo MVCC (Multi Version Concurrency Control) é uma técnica avançada utilizada pelo PostgreSQL para garantir a consistência dos dados mesmo quando várias transações estão acessando o banco de dados simultaneamente. O MVCC permite operações de leitura e escrita concorrentes sem bloqueio mútuo, o que aumenta a performance e a escalabilidade do sistema.
No MVCC, cada transação vê um snapshot dos dados conforme eles estavam no início da transação, independentemente das alterações que outras transações possam estar fazendo simultaneamente. Isso significa que:
- A leitura nunca bloqueia a escrita: uma transação pode ler dados sem ser interrompida por outra transação que esteja escrevendo.
- A escrita nunca bloqueia a leitura: transações que estão atualizando dados não impedem outras transações de ler dados.
- Cada transação enxerga um snapshot dos dados: ao iniciar uma transação, uma visão estática dos dados é proporcionada a essa transação, assim, ela não é afetada por mudanças externas.
- Impede que a transação enxergue dados inconsistentes: as transações só trabalham com versões dos dados que são consistentes de acordo com o estado do banco de dados no momento em que a transação começou.
Por outro lado, a alternativa E afirma que o MVCC "considera o estado concorrente dos dados provocados pelas demais transações". Essa afirmação é INCORRETA, pois uma característica fundamental do MVCC é que ele permite que transações operem de forma que cada uma ignore as operações concorrentes das outras. Ou seja, uma transação não leva em conta as modificações sendo feitas por outras transações; ela trabalha com a visão dos dados que tinha no momento do seu snapshot. Isso é essencial para garantir a consistência e o isolamento entre transações, prevenindo, assim, a visão de dados inconsistentes.
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
MVCC also provides potential "point in time" consistent views. In fact read transactions under MVCC typically use a timestamp or transaction ID to determine what state of the DB to read, and read these "versions" of the data. This avoids managing locks for read transactions because writes can be isolated by virtue of the old versions being maintained, rather than through a process of locks or mutexes.
In other words, MVCC provides each user connected to the database with a "snapshot" of the database for that person to work with. Any changes made will not be seen by other users of the database until the transaction has been committed.
http://en.wikipedia.org/wiki/Multiversion_concurrency_control
Diferentemente dos sistemas gerenciadores de banco de dados tradicionais, que usam bloqueios para controlar a simultaneidade, o 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) como estes eram há um tempo atrás, sem levar em consideração o estado corrente dos dados subjacentes. Este modelo protege a transação contra enxergar dados inconsistentes, o que poderia ser causado por atualizações feitas por transações simultâneas nas mesmas linhas de dados, fornecendo um isolamento da transação para cada sessão do banco de dados.
A principal vantagem de utilizar o modelo de controle de simultaneidade MVCC em vez de bloqueios é que, no MVCC os bloqueios obtidos para consultar dados (leitura) não conflitam com os bloqueios obtidos para escrever dados e, portanto, a leitura nunca bloqueia a escrita, e a escrita nunca bloqueia a leitura.
Quem não tem acesso: - -> E
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo