SóProvas


ID
171328
Banca
FGV
Órgão
MEC
Ano
2009
Provas
Disciplina
Banco de Dados
Assuntos

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
Comentários
  • 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

  • a) Certa! No MVCC, uma leitura não bloqueia uma escrita e uma escrita não bloqueia uma leitura. 

    b) Também está correta, mesma justificativa da anterior.

    c) No MVCC, como o próprio nome já diz, são armazenadas múltiplas versões dos dados. Essas versões são os diferentes estados do dado ao longo do tempo e são chamadas de snapshots.

    d) O MVCC é um mecanismo de controle de concorrência. Assim como os demais mecanismos de concorrência, ele visa impedir que uma transação enxergue dados inconsistentes, para que não produza resultados incorretos. Assim, a letra D também está certa.

    Uma ressalva é que o MVCC pode ser configurado para assumir outros níveis de isolamento que não o SSI (serializável), então, em tese, poderia haver alguma leitura de dados inconsistentes – mas isso é a exceção, não a regra!

    e) Essa é a nossa resposta. O MVCC cria uma nova versão dos dados para cada transação que o está modificando. Assim, não se considera um “estado concorrente”, mas sim são armazenadas múltiplas versões (snapshots) para o dado.