Controle de concorrência multiversão

Controle de concorrência multiversão (MCC ou MVCC), é um método de controle de concorrência comumente usado por sistemas de gerenciamento de banco de dados para fornecer acesso simultâneo ao banco de dados, ou em linguagens de programação, para implementar memória transacional[1]. Ao serem iniciados novos processos de leitura de um banco de dados, e nesse mesmo instante exitir um outro processo que está atualizando, pode acontecer que o processo de leitura esteja lendo veja apenas uma parte do que está sendo atualizado, ou seja, um dado inconsistente.[2]

Implementação editar

Existem várias maneiras de resolver este problema, conhecidas como métodos de controle de concorrência. A forma mais simples é fazer com que todos os processos esperem até que atualização esteja concluída. Este método é conhecido como bloqueio e pode fazer abrandar novos processos no banco de dados.[3]

Por conta disso, 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. Este método também permite que o banco de dados evite a sobrecarga, acumulando vazios na memória ou na estrutura do disco. Mas geralmente requer uma varredura periódica do sistema para limpar e apagar os dados obsoletos. Para um banco de dados orientado a documentos, o método permite a otimização do sistema escrevendo documentos inteiros em seções contíguas de disco – quando atualizado, todo o documento pode ser reescrito, ao invés de pedaços e partes cortadas e mantidas vinculadas em uma estrutura de banco de dados não contígua.[4]

Ver também editar

Referências

  1. «Refs and Transactions» (em inglês). Consultado em 10 de julho de 2013 
  2. Profa. Késsia R. C. Marchi. «Controle de conconrrência» (PDF). Universidade Paranaense. Consultado em 11 de julho de 2013 
  3. Francisco Reverbel (1999). «Conceito básico para controle de concorrência» (PDF). ime-USP. Consultado em 11 de julho de 2013 
  4. Marco A. Casanova. «Controle de conconrrência» (PDF). Departamento de informática PUC-Rio. Consultado em 11 de julho de 2013 
  Este artigo sobre computação é um esboço. Você pode ajudar a Wikipédia expandindo-o.