O que é controle de simultaneidade?
O controle de simultaneidade no sistema de gerenciamento de banco de dados é um procedimento de gerenciamento de operações simultâneas sem conflito entre si. Ele garante que as transações do banco de dados sejam realizadas simultaneamente e com precisão para produzir resultados corretos, sem violar a integridade dos dados do respectivo banco de dados.
O acesso simultâneo é muito fácil se todos os usuários estiverem apenas lendo dados. Não há como eles interferirem um com o outro. Embora para qualquer banco de dados prático, ele teria uma combinação de operações READ e WRITE e, portanto, a simultaneidade é um desafio.
O Controle de simultaneidade do DBMS é usado para resolver esses conflitos, que ocorrem principalmente com um sistema multiusuário. Portanto, o Controle de Concorrência é o elemento mais importante para o bom funcionamento de um Sistema de Gerenciamento de Banco de Dados onde duas ou mais transações de banco de dados são executadas simultaneamente, o que requer acesso aos mesmos dados.
Neste tutorial, você aprenderá
- O que é controle de simultaneidade?
- Problemas potenciais de simultaneidade
- Por que usar o método de simultaneidade?
- Protocolos de controle de simultaneidade
- Protocolos baseados em bloqueio
- Protocolo de bloqueio de duas fases (2PL)
- Protocolos baseados em carimbo de data / hora
- Protocolo Baseado em Validação
- Características do protocolo de boa concorrência
Problemas potenciais de simultaneidade
Aqui estão alguns problemas que você provavelmente enfrentará ao usar o método de controle de simultaneidade do DBMS:
- As atualizações perdidas ocorrem quando várias transações selecionam a mesma linha e atualizam a linha com base no valor selecionado
- Problemas de dependência não confirmados ocorrem quando a segunda transação seleciona uma linha que é atualizada por outra transação ( leitura suja )
- A leitura não repetível ocorre quando uma segunda transação está tentando acessar a mesma linha várias vezes e lê dados diferentes a cada vez.
- O problema de resumo incorreto ocorre quando uma transação assume o resumo do valor de todas as instâncias de um item de dados repetido e a segunda transação atualiza algumas instâncias desse item de dados específico. Nessa situação, o resumo resultante não reflete um resultado correto.
Por que usar o método de simultaneidade?
Razões para usar o método de controle de simultaneidade é DBMS:
- Para aplicar o isolamento por meio da exclusão mútua entre transações conflitantes
- Para resolver problemas de conflito de leitura-gravação e gravação-gravação
- Para preservar a consistência do banco de dados através da preservação constante de obstruções de execução
- O sistema precisa controlar a interação entre as transações simultâneas. Esse controle é obtido por meio de esquemas de controle simultâneo.
- O controle de simultaneidade ajuda a garantir a serialização
Exemplo
Suponha que duas pessoas que vão a quiosques eletrônicos ao mesmo tempo para comprar um ingresso de cinema para o mesmo filme e o mesmo horário de exibição.
No entanto, há apenas um assento restante para a exibição do filme naquele teatro específico. Sem o controle de simultaneidade no DBMS, é possível que ambos os cinéfilos acabem comprando um ingresso. No entanto, o método de controle de simultaneidade não permite que isso aconteça. Ambos os espectadores ainda podem acessar informações gravadas no banco de dados de assentos de cinema. Mas o controle de simultaneidade fornece apenas um tíquete para o comprador que concluiu o processo de transação primeiro.
Protocolos de controle de simultaneidade
Diferentes protocolos de controle de simultaneidade oferecem benefícios diferentes entre a quantidade de simultaneidade que permitem e a quantidade de sobrecarga que impõem. A seguir estão as técnicas de controle de simultaneidade no DBMS:
- Protocolos baseados em bloqueio
- Protocolo de bloqueio de duas fases
- Protocolos baseados em carimbo de data / hora
- Protocolos Baseados em Validação
Protocolos baseados em bloqueio
Os Protocolos Baseados em Bloqueio no DBMS são um mecanismo no qual uma transação não pode Ler ou Gravar os dados até que adquira um bloqueio apropriado. Os protocolos baseados em bloqueio ajudam a eliminar o problema de simultaneidade no DBMS para transações simultâneas, bloqueando ou isolando uma transação específica para um único usuário.
Um bloqueio é uma variável de dados associada a um item de dados. Este bloqueio significa que as operações que podem ser executadas no item de dados. Os bloqueios no DBMS ajudam a sincronizar o acesso aos itens do banco de dados por transações simultâneas.
Todas as solicitações de bloqueio são feitas ao gerenciador de controle de simultaneidade. As transações continuam apenas depois que a solicitação de bloqueio é concedida.
Bloqueios binários: um bloqueio binário em um item de dados pode estar bloqueado ou desbloqueado.
Compartilhado / exclusivo: este tipo de mecanismo de bloqueio separa os bloqueios no DBMS com base em seus usos. Se um bloqueio é adquirido em um item de dados para realizar uma operação de gravação, é chamado de bloqueio exclusivo.
1. Bloqueio compartilhado (S):
Um bloqueio compartilhado também é chamado de bloqueio somente leitura. Com o bloqueio compartilhado, o item de dados pode ser compartilhado entre as transações. Isso ocorre porque você nunca terá permissão para atualizar dados no item de dados.
Por exemplo, considere um caso em que duas transações estão lendo o saldo da conta de uma pessoa. O banco de dados permitirá que eles leiam, colocando um bloqueio compartilhado. No entanto, se outra transação quiser atualizar o saldo dessa conta, o bloqueio compartilhado evita isso até que o processo de leitura termine.
2. Bloqueio exclusivo (X):
Com o bloqueio exclusivo, um item de dados pode ser lido e também escrito. Isso é exclusivo e não pode ser realizado simultaneamente no mesmo item de dados. O X-lock é solicitado usando a instrução lock-x. As transações podem desbloquear o item de dados após o término da operação de 'gravação'.
Por exemplo, quando uma transação precisa atualizar o saldo da conta de uma pessoa. Você pode permitir essa transação colocando um bloqueio X nela. Portanto, quando a segunda transação deseja ler ou gravar, o bloqueio exclusivo impede essa operação.
3. Protocolo de bloqueio simplista
Este tipo de protocolo baseado em bloqueio permite que as transações obtenham um bloqueio em cada objeto antes de iniciar a operação. As transações podem desbloquear o item de dados após o término da operação de 'gravação'.
4. Bloqueio de pré-reivindicação
O protocolo de bloqueio de pré-reivindicação ajuda a avaliar as operações e a criar uma lista de itens de dados necessários para iniciar um processo de execução. Na situação em que todos os bloqueios são concedidos, a transação é executada. Depois disso, todos os bloqueios são liberados quando todas as suas operações terminam.
Inanição
Starvation é a situação em que uma transação precisa esperar por um período indefinido para adquirir um bloqueio.
A seguir estão os motivos para a fome:
- Ao aguardar, o esquema de itens bloqueados não é gerenciado adequadamente
- No caso de vazamento de recursos
- A mesma transação é selecionada como vítima repetidamente
Impasse
Deadlock refere-se a uma situação específica em que dois ou mais processos aguardam um ao outro para liberar um recurso ou mais de dois processos aguardam o recurso em uma cadeia circular.
Protocolo de bloqueio de duas fases
O protocolo Two Phase Locking, também conhecido como protocolo 2PL, é um método de controle de simultaneidade em DBMS que garante a serialização aplicando um bloqueio aos dados da transação que bloqueia outras transações para acessar os mesmos dados simultaneamente. O protocolo Two Phase Locking ajuda a eliminar o problema de simultaneidade no DBMS.
Este protocolo de bloqueio divide a fase de execução de uma transação em três partes diferentes.
- Na primeira fase, quando a transação começa a ser executada, ela requer permissão para os bloqueios de que precisa.
- A segunda parte é onde a transação obtém todos os bloqueios. Quando uma transação libera seu primeiro bloqueio, a terceira fase é iniciada.
- Nesta terceira fase, a transação não pode exigir novos bloqueios. Em vez disso, ele apenas libera os bloqueios adquiridos.
O protocolo de bloqueio de duas fases permite que cada transação faça uma solicitação de bloqueio ou desbloqueio em duas etapas:
- Fase de crescimento : nesta fase, a transação pode obter bloqueios, mas não pode liberar nenhum.
- Fase de redução : nesta fase, uma transação pode liberar bloqueios, mas não obter nenhum novo bloqueio
É verdade que o protocolo 2PL oferece serializabilidade. No entanto, isso não garante que os deadlocks não ocorram.
No diagrama fornecido acima, você pode ver que os detectores de deadlock locais e globais estão procurando bloqueios e os resolvem com a retomada das transações aos seus estados iniciais.
Método estrito de bloqueio de duas fases
O sistema de bloqueio Strict-Two phase é quase semelhante ao 2PL. A única diferença é que o Strict-2PL nunca libera um bloqueio depois de usá-lo. Ele mantém todos os bloqueios até o ponto de confirmação e libera todos os bloqueios de uma vez quando o processo termina.
2PL centralizado
No Centralized 2 PL, um único site é responsável pelo processo de gerenciamento de bloqueio. Possui apenas um gerenciador de bloqueio para todo o DBMS.
Cópia primária 2PL
Mecanismo de cópia primária 2PL, muitos gerenciadores de bloqueio são distribuídos para diferentes sites. Depois disso, um gerenciador de bloqueio específico é responsável por gerenciar o bloqueio de um conjunto de itens de dados. Quando a cópia primária é atualizada, a alteração é propagada para os escravos.
Distribuído 2PL
Nesse tipo de mecanismo de bloqueio de duas fases, os gerenciadores de bloqueio são distribuídos a todos os sites. Eles são responsáveis por gerenciar bloqueios de dados nesse site. Se nenhum dado for replicado, é equivalente à cópia primária 2PL. Os custos de comunicação do 2PL Distribuído são bastante maiores do que a cópia primária 2PL
Protocolos baseados em carimbo de data / hora
O protocolo baseado em carimbo de data / hora no DBMS é um algoritmo que usa a hora do sistema ou o contador lógico como um carimbo de data / hora para serializar a execução de transações simultâneas. O protocolo baseado em carimbo de data / hora garante que todas as operações conflitantes de leitura e gravação sejam executadas em uma ordem de carimbo de data / hora.
A transação mais antiga sempre tem prioridade neste método. Ele usa a hora do sistema para determinar a data e hora da transação. Este é o protocolo de simultaneidade mais comumente usado.
Os protocolos baseados em bloqueio ajudam a gerenciar a ordem entre as transações conflitantes quando elas serão executadas. Os protocolos baseados em carimbo de data / hora gerenciam conflitos assim que uma operação é criada.
Exemplo:
Suppose there are there transactions T1, T2, and T3.T1 has entered the system at time 0010T2 has entered the system at 0020T3 has entered the system at 0030Priority will be given to transaction T1, then transaction T2 and lastly Transaction T3.
Vantagens :
- Os agendamentos são serializáveis como os protocolos 2PL
- Sem espera pela transação, o que elimina a possibilidade de deadlocks!
Desvantagens:
A privação é possível se a mesma transação for reiniciada e abortada continuamente
Protocolo Baseado em Validação
O protocolo baseado em validação no SGBD, também conhecido como Técnica de controle de simultaneidade otimista, é um método para evitar a simultaneidade em transações. Neste protocolo, as cópias locais dos dados da transação são atualizadas em vez dos dados em si, o que resulta em menos interferência durante a execução da transação.
O protocolo baseado em validação é realizado nas seguintes três fases:
- Fase de leitura
- Fase de Validação
- Fase de Escrita
Fase de leitura
Na fase de leitura, os valores de dados do banco de dados podem ser lidos por uma transação, mas a operação de gravação ou atualizações são aplicadas apenas às cópias de dados locais, não ao banco de dados real.
Fase de Validação
Na fase de validação, os dados são verificados para garantir que não haja violação de serializabilidade ao aplicar as atualizações de transação ao banco de dados.
Fase de Escrita
Na fase de gravação, as atualizações são aplicadas ao banco de dados se a validação for bem-sucedida, caso contrário; as atualizações não são aplicadas e a transação é revertida.
Características do protocolo de boa concorrência
Um mecanismo de DBMS de controle de simultaneidade ideal tem os seguintes objetivos:
- Deve ser resiliente a falhas de site e comunicação.
- Ele permite a execução paralela de transações para atingir a simultaneidade máxima.
- Seus mecanismos de armazenamento e métodos computacionais devem ser modestos para minimizar a sobrecarga.
- Ele deve impor algumas restrições à estrutura das ações atômicas das transações.
Resumo
- O controle de simultaneidade é o procedimento no SGBD para gerenciar operações simultâneas sem conflito entre si.
- Atualizações perdidas, leitura suja, leitura não repetível e problema de resumo incorreto são problemas enfrentados devido à falta de controle de simultaneidade.
- Com base em bloqueio, duas fases, com base em carimbo de data / hora, com base em validação são tipos de protocolos de tratamento de simultaneidade
- O bloqueio pode ser compartilhado (S) ou exclusivo (X)
- O protocolo de bloqueio de duas fases, também conhecido como protocolo 2PL, precisa de transação deve adquirir um bloqueio após liberar um de seus bloqueios. Possui 2 fases de crescimento e encolhimento.
- O algoritmo baseado em carimbo de data / hora usa um carimbo de data / hora para serializar a execução de transações simultâneas. O protocolo usa a hora do sistema ou contagem lógica como um registro de data e hora.