Controle de concorrência lida com questões envolvidas com permitindo que vários usuários acessem simultaneamente a entidades compartilhados, como uma tabela de dados ou outros objetos. Neste caso, um método de controle é necessário para gerenciar as atualizações. O método universalmente aceito foi para serializar a execução das atualizações. Mas não é aceitável em alguns contextos , como o primeiro a chegar , primeiro a ser servido processamento . Existem vários métodos de controle de concorrência que se aplicam em diferentes circunstâncias. Pessimista Controle de Concorrência
Este método implementa bloqueios que impede os usuários de alterar os dados de uma maneira que afeta outros usuários. Quando um usuário executa uma ação em uma entidade que aplica um bloqueio sobre a entidade , outros usuários não podem realizar ações em que entidade até que o proprietário dos lançamentos bloqueá-lo . O controle pessimista é utilizada quando há uma disputa de alta para dados.
Controle de concorrência otimista
Utilizando o método de controle de concorrência otimista , os usuários não bloquear os dados quando eles usá-lo . Quando um usuário atualiza os dados , o sistema verifica se o banco de dados do outro usuário alterou os dados depois de lê-lo. Após a atualização de outro usuário, será gerado um erro . O usuário que recebe o erro reverte a transação e começa de novo. Técnicas Este método é utilizado quando há baixa contenção de dados.
Duas Fases bloqueio
O bloqueio é uma operação que garante uma leitura ou escrita permissão para um entidade . Por exemplo, Lock ( X). A entidade X é bloqueado por um utilizador . Usando esta técnica, uma transação é bem formado se : ele bloqueia a entidade antes de lê ou escreve a ele , não deve travar uma entidade fechada e não deve tentar desbloquear uma entidade livre
. Controle de concorrência baseado em timestamp
um inteiro monótona crescente chamado timestamp mostra a idade de uma operação em uma entidade. Um valor timestamp maior representa uma operação recente. Método baseado em Timestamp timestamp utiliza para controlar a execução de transações simultâneas .