Controle de simultaneidade de DBMS: carimbo de data/hora e protocolos baseados em bloqueio

O que é controle de simultaneidade?

Controle de simultaneidade no Sistema de Gerenciamento de Banco de Dados é um procedimento de gerenciamento simultâneoneonossas operações sem entrar em conflito entre si. Ele garante que as transações do Banco de Dados sejam realizadas de forma simultânea e precisa para produzir resultados corretos sem violar a integridade dos dados do respectivo Banco de Dados.

O acesso simultâneo é bastante fácil se todos os usuários estiverem apenas lendo dados. Não há como eles interferirem um no outro. Embora para qualquer banco de dados prático, ele teria uma mistura 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 Simultaneidade é o elemento mais importante para o bom funcionamento de um Sistema Gerenciador de Banco de Dados onde duas ou mais transações de banco de dados são executadas simultaneamente.neogeralmente, que exigem acesso aos mesmos dados.

Potenciais problemas de simultaneidade

Aqui estão alguns problemas que você provavelmente enfrentará ao usar o método de controle de simultaneidade DBMS:

  • Atualizações perdidas ocorre quando várias transações selecionam a mesma linha e atualizam a linha com base no valor selecionado
  • Problemas de dependência não confirmada ocorrem quando a segunda transação seleciona uma linha que é atualizada por outra transação (leitura suja)
  • Leitura não repetível ocorre quando uma segunda transação tenta acessar a mesma linha várias vezes e lê dados diferentes a cada vez.
  • Problema de resumo incorreto ocorre quando uma transação resume o 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?

Os motivos para usar o método de controle de simultaneidade são DBMS:

  • Aplicar isolamento por meio de 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 preservando constantemente as obstruções de execução
  • O sistema precisa controlar a interação entre as transações simultâneas. Este controle é obtido usando esquemas de controle simultâneo.
  • O controle de simultaneidade ajuda a garantir a serialização

Exemplo

Suponha que duas pessoas vão a quiosques eletrônicos ao mesmo tempo para comprar um ingresso de cinema para o mesmo filme e no mesmo horário de exibição.

No entanto, resta apenas um assento para a exibição do filme naquele cinema específico. Sem controle de simultaneidade no SGBD, é possível que ambos os espectadores 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 escritas no banco de dados de assentos do cinema. Mas o controle de simultaneidade fornece um ticket apenas 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. Sigawing são as técnicas de controle de simultaneidade em SGBD:

  • Protocolos baseados em bloqueio
  • Protocolo de bloqueio bifásico
  • Protocolos baseados em carimbo de data/hora
  • Protocolos baseados em validação

Protocolos baseados em bloqueio

Protocolos baseados em bloqueio no SGBD é um mecanismo no qual uma transação não pode ler ou gravar os dados até adquirir um bloqueio apropriado. Protocolos baseados em bloqueio ajudam a eliminar o problema de simultaneidade no SGBD para simulaçãoneous transações 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 SGBD ajudam a sincronizar o acesso aos itens do banco de dados por meio de transações simultâneas.

Todas as solicitações de bloqueio são feitas ao gerenciador de controle de simultaneidade. As transações prosseguem apenas quando a solicitação de bloqueio é concedida.

Bloqueios binários: Um bloqueio binário em um item de dados pode ter estados bloqueado ou desbloqueado.

Compartilhado/exclusivo: Este tipo de mecanismo de bloqueio separa os bloqueios no SGBD com base em seus usos. Se um bloqueio for adquirido em um item de dados para executar uma operação de gravação, ele será 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 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 leem o saldo da conta de uma pessoa. O banco de dados permitirá que eles leiam colocando um cadeado compartilhado. Porém, se outra transação quiser atualizar o saldo daquela conta, o bloqueio compartilhado impede isso até que o processo de leitura termine.

2. Bloqueio Exclusivo (X):

Com o bloqueio exclusivo, um item de dados pode ser lido e gravado. Isso é exclusivo e não pode ser mantido simultaneamente no mesmo item de dados. X-lock é solicitado usando a instrução lock-x. As transações podem desbloquear o item de dados após terminar a operação de “gravação”.

Por exemplo, quando uma transação precisa atualizar o saldo da conta de uma pessoa. Você pode permitir esta transação colocando X lock nela. Portanto, quando a segunda transação deseja ler ou escrever, o bloqueio exclusivo impede esta 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 terminar a operação de “gravação”.

4. Pré-reivindicação de bloqueio

O protocolo de pré-reivindicação de bloqueio 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.

Fome

A fome é a situação em que uma transação precisa esperar um período indefinido para adquirir um bloqueio.

Following são as razões para a fome:

  • Quando o esquema de espera para itens bloqueados não é gerenciado adequadamente
  • No caso de vazamento de recursos
  • A mesma transação é selecionada como vítima repetidamente

Deadlock

Deadlock refere-se a uma situação específica onde dois ou mais processos estão esperando um pelo outro para liberar um recurso ou mais de dois processos estão esperando pelo recurso em uma cadeia circular.

Protocolo de bloqueio bifásico

Protocolo de bloqueio bifásico também conhecido como protocolo 2PL é um método de controle de simultaneidade em SGBD que garante a serialização aplicando um bloqueio aos dados da transação que bloqueia outras transações para acessar os mesmos dados simultaneamenteneogeralmente. O protocolo Two Phase Locking ajuda a eliminar o problema de simultaneidade no SGBD.

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 necessita.
  • 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, apenas libera os bloqueios adquiridos.

Protocolo de bloqueio bifásico

O protocolo Two-Phase Locking permite que cada transação faça uma solicitação de bloqueio ou desbloqueio em duas etapas:

  • Growing Fase: Nesta fase, a transação pode obter bloqueios, mas não pode liberar nenhum bloqueio.
  • Fase de Encolhimento: Nesta fase, uma transação pode liberar bloqueios, mas não obter nenhum novo bloqueio

É verdade que o protocolo 2PL oferece serialização. Contudo, não garante queadlockisso não acontece.

No diagrama fornecido acima, você pode ver que a distribuição local e globaladlock detectores estão procurando por deadlockse resolvê-los retomando as transações aos seus estados iniciais.

Método estrito de bloqueio bifásico

O sistema de bloqueio estrito de duas fases é quase semelhante ao 2PL. A única diferença é que o Strict-2PL nunca libera um bloqueio após usá-lo. Ele mantém todos os bloqueios até o ponto de confirmação e libera todos os bloqueios de uma só vez quando o processo termina.

2PL centralizado

No 2 PL Centralizado, um único site é responsável pelo processo de gerenciamento de bloqueios. Possui apenas um gerenciador de bloqueio para todo o SGBD.

Cópia primária 2PL

Mecanismo 2PL de cópia primária, muitos gerenciadores de bloqueio são distribuídos para sites diferentes. 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 for atualizada, a alteração será propagada para os escravos.

2PL distribuído

Neste tipo de mecanismo de bloqueio de duas fases, os gerenciadores de bloqueio são distribuídos para 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 mais elevados do que os da cópia primária 2PL

Protocolos baseados em carimbo de data/hora

Protocolo baseado em carimbo de data/hora no SGBD é um algoritmo que usa a hora do sistema ou contador lógico como 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 o carimbo de data/hora da transação. Este é o protocolo de simultaneidade mais comumente usado.

Os protocolos baseados em bloqueio ajudam você 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 0010 
T2 has entered the system at 0020
T3 has entered the system at 0030
Priority will be given to transaction T1, then transaction T2 and lastly Transaction T3.

Vantagens:

  • As programações são serializáveis ​​como os protocolos 2PL
  • Não há espera pela transação, o que elimina a possibilidade deadlocks!

Desvantagens:

A fome é possível se a mesma transação for reiniciada e continuamente abortada

Protocolo Baseado em Validação

Protocolo baseado em validação em SGBD, também conhecido como Técnica de Controle de Simultaneidade Otimista, é um método para evitar simultaneidade em transações. Neste protocolo, as cópias locais dos dados da transação são atualizadas e não os dados em si, o que resulta em menos interferência durante a execução da transação.

O protocolo baseado em validação é executado a seguirwing três fases:

  1. Fase de leitura
  2. Fase de validação
  3. Fase de gravação

Fase de leitura

Na fase de leitura, os valores dos 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 da serialização ao aplicar as atualizações da transação ao banco de dados.

Fase de gravação

Na Fase de Gravação, as atualizações são aplicadas ao banco de dados caso a validação seja bem-sucedida, caso contrário; as atualizações não são aplicadas e a transação é revertida.

Características do bom protocolo de simultaneidade

Um mecanismo DBMS de controle de simultaneidade ideal tem o seguintewing Objetivos:

  • Deve ser resiliente a falhas do site e de comunicação.
  • Ele permite a execução paralela de transações para atingir a máxima simultaneidade.
  • Seus mecanismos de armazenamento e métodos computacionais devem ser modestos para minimizar a sobrecarga.
  • Deve impor algumas restrições à estrutura de atomações ic de transações.

Resumo

  • O controle de simultaneidade é o procedimento em DBMS para gerenciamento simultâneoneonossas operações sem entrar em 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.
  • Baseado em bloqueio, bifásico, baseado em carimbo de data / hora e baseado em validação são tipos de protocolos de manipulação de simultaneidade
  • O bloqueio pode ser Compartilhado (S) ou Exclusivo (X)
  • O protocolo de bloqueio bifásico, também conhecido como protocolo 2PL, precisa de transação, deve adquirir um bloqueio após liberar um de seus bloqueios. Tem 2 fases growing e encolhendo.
  • 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 o Hora do sistema ou contagem lógica como um carimbo de data/hora.