Para garantir o controle de concorrência e, consequentemente...

Próximas questões
Com base no mesmo assunto
Ano: 2009 Banca: FGV Órgão: MEC Prova: FGV - 2009 - MEC - Administrador de Banco de Dados |
Q57107 Banco de Dados
Para garantir o controle de concorrência e, consequentemente a consistência dos dados, o PostgreSQL utiliza o modelo MVCC (Multi Version Concurrency Control).
A respeito desse modelo não é correto afirmar que:
Alternativas

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 uses timestamps or increasing transaction IDs to achieve transactional consistency. MVCC ensures a transaction never has to wait for a database object by maintaining several versions of an object.
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
Questão retirada do link: http://pgdocptbr.sourceforge.net/pg80/mvcc.html

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 ControlMVCC). 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