Bancos de Dados - Aula 25 - Controle de concorrência – Parte I

Bancos de Dados - Aula 25 - Controle de concorrência – Parte I

Controlador de Concorrência em SGBD

Introdução ao Controlador de Concorrência

  • O controlador de concorrência é um módulo interno do SGBD que assegura a propriedade de isolamento das transações, fundamental para o funcionamento correto do sistema.
  • A propriedade de isolamento garante que uma transação execute e obtenha resultados independentemente da execução simultânea de outras transações.

Funcionamento do Controlador de Concorrência

  • O controlador implementa procedimentos que controlam como as operações das transações são intercaladas durante a execução concorrente.
  • O resultado final das execuções deve ser equivalente ao que seria obtido com uma execução serial das mesmas transações.

Protocolos Utilizados

  • Para garantir o isolamento, os SGBDs utilizam protocolos, sendo o protocolo baseado em bloqueio um dos mais básicos e importantes.
  • As transações devem solicitar bloqueios nos dados antes de acessá-los; somente assim podem realizar leituras ou gravações.

Tipos de Bloqueios

  • Existem dois tipos principais de bloqueios: compartilhado e exclusivo.
  • Bloqueio Compartilhado: Permite leitura por várias transações simultaneamente, mas não permite alterações.
  • Bloqueio Exclusivo: Permite tanto leitura quanto escrita, sendo restrito a uma única transação por vez.

Compatibilidade entre Bloqueios

  • A compatibilidade entre bloqueios é crucial; apenas bloqueios compartilhados podem coexistir sobre o mesmo dado.
  • Se uma transação possui um bloqueio exclusivo sobre um item, nenhuma outra pode obter um bloqueio compartilhado nesse mesmo item até que o primeiro seja liberado.

Exemplificação Prática

Gerenciamento de Transações e Bloqueios

Solicitação e Concessão de Bloqueios

  • As transações devem solicitar o bloqueio necessário para realizar operações, e o sistema deve garantir esse bloqueio antes da execução.
  • Um exemplo é dado onde uma transação solicita um bloqueio compartilhado, que é concedido, permitindo a execução de suas operações.

Execução Concorrente

  • A execução intercalada de duas transações pode ser realizável, gerando dados consistentes semelhantes a uma execução serial.
  • O conceito de "execução serializável" é introduzido, onde as transações podem ser executadas em qualquer ordem sem afetar os resultados finais.

Fases do Protocolo de Bloqueio

  • As transações solicitam bloqueios conforme necessário, mas liberam apenas ao final das operações.
  • Uma situação ocorre quando uma transação está impedida devido à necessidade de um bloqueio que outra transação ainda não liberou.

Situação de Impasse

  • Um impasse acontece quando duas transações estão esperando uma pela outra para liberar os dados necessários para continuar sua execução.
  • É crucial ter um protocolo que trate essas situações para evitar que as transações fiquem suspensas indefinidamente.

Protocolo de Bloqueio em Duas Fases

  • O protocolo estudado não impede impasses, mas garante que todas as execuções concorrentes sejam equivalentes a execuções seriais.
  • Este protocolo possui duas fases: expansão (onde se pode solicitar bloqueios sem liberar nenhum) e encolhimento (onde se pode liberar bloqueios sem solicitar novos).

Exemplo Prático do Protocolo

  • No exemplo prático, as transações seguem o protocolo em duas fases: primeiro solicitam os bloqueios e depois os liberam.

Bloqueio e Execução de Transações

Funcionamento do Bloqueio Exclusivo e Compartilhado

  • A transação 1 solicita um bloqueio exclusivo no dado B, mas sua execução é suspensa momentaneamente devido à intercalacão de uma operação da transação 2.
  • A transação 2 tenta obter um bloqueio compartilhado em B, mas não consegue porque o dado está travado para escrita pela transação 1.
  • O sistema permite que a transação 1 continue enquanto a transação 2 permanece em espera, aguardando o desbloqueio do dado B.

Desbloqueio e Continuação das Transações

  • Quando a transação 1 destrava o dado B, a transação 2 pode solicitar novamente o bloqueio compartilhado e obtê-lo com sucesso.
  • Durante sua execução, a transação 2 lê dados e realiza operações sem interferir na execução da transação 1, que também utiliza o dado A simultaneamente.

Reflexões sobre Protocolos de Bloqueio

  • Ambas as transações utilizam bloqueios compartilhados, permitindo execuções simultâneas sem conflitos nos dados lidos.
  • É proposto um exercício para refletir sobre qual seria a execução serial equivalente à concorrente apresentada nas transações discutidas.

Protocolos de Bloqueio Avançados

  • Existem protocolos avançados como o protocolo de bloqueio em duas fases rigoroso e outros que permitem upgrade/downgrade das travas; no entanto, o foco será no protocolo básico de duas fases.
  • O estudo do protocolo de granularidade múltipla é sugerido como uma área interessante para aprofundamento.

Controle de Concorrência nas Transações

  • O controlador de concorrência gerencia automaticamente os bloqueios para as transações, garantindo integridade nos dados durante acessos simultâneos.
  • Programadores podem solicitar explicitamente tipos específicos de bloqueios; isso deve ser feito com cautela para evitar inconsistências nos dados devido à concorrência.

Conclusão e Próximos Passos

Video description

Engenharia de Computação – Bancos de Dados Disciplina EID - 002 - Bancos de Dados Professora responsável: Sarajane Marques Peres Playlist da disciplina: https://www.youtube.com/playlist?list=PLxI8Can9yAHeHQr2McJ01e-ANyh3K0Lfq