Bancos de Dados - Aula 26 - Controle de concorrência – Parte II

Bancos de Dados - Aula 26 - Controle de concorrência – Parte II

Introdução ao Controle de Concorrência em Bancos de Dados

Conceitos Iniciais

  • A professora Sara introduz a disciplina de bancos de dados, focando no controle de concorrência e no protocolo de bloqueio em duas fases.
  • O protocolo mencionado não garante a ausência de impasses (deadlocks), que é o foco da aula.

Problemas com Deadlocks

  • Define-se um deadlock como uma situação onde um conjunto de transações está esperando umas pelas outras, criando um ciclo sem fim.
  • Exemplo prático: Transação 1 espera pela 2, que espera pela 3, que por sua vez espera pela 1, resultando em um impasse.

Métodos para Tratar Deadlocks

Prevenção e Detecção

  • Existem dois métodos principais para lidar com deadlocks: prevenção e detecção/recovery.
  • O método de prevenção evita que o sistema entre em estado de deadlock desde o início, sendo mais eficaz quando a probabilidade desse problema é alta.

Abordagens para Prevenção

  • A primeira abordagem exige que todas as transações obtenham todos os bloqueios necessários antes da execução. Isso previne deadlocks mas reduz a concorrência.
  • Embora essa abordagem evite deadlocks, ela pode diminuir a eficiência do sistema devido à espera prolongada por recursos.

Abordagem Alternativa na Prevenção

Reversão e Selo de Tempo

  • Uma segunda abordagem permite maior concorrência ao reverter transações se necessário. Se uma transação precisa ceder seu bloqueio, ela é revertida.
  • Cada transação recebe um "timestamp" ou selo temporal no momento da execução. Se revertida, mantém esse timestamp original para futuras execuções.

Considerações Finais sobre Conflitos

Mecanismos de Espera e Morte em Transações

Protocólos de Espera e Morte

  • O conceito de "esperar morrer" é introduzido, onde transações competem por dados. Se uma transação mais velha (tj) está bloqueando um dado que uma transação mais nova (tiê) deseja, a tiê pode ser desfeita.
  • Se a transação tiê for mais nova do que tj, ela não poderá esperar e será eliminada do sistema. Isso garante que as transações mais velhas tenham prioridade.
  • As transações no sistema operam de forma concorrente, solicitando e liberando travas. A regra principal é que as transações mais velhas podem esperar enquanto as novas são descartadas se tentarem acessar dados bloqueados.

Exemplos Práticos

  • Um exemplo prático é apresentado com três transações (t2, t3 e t4). A t2 entra primeiro no sistema, seguida por t3 e depois t4. Se a t4 tentar acessar um dado mantido pela t3, ela será eliminada.
  • Quando uma transação é eliminada, suas operações devem ser revertidas. Ao retornar ao sistema, ela terá um timestamp antigo e poderá ter prioridade novamente.

Esquema Alternativo: Esperar

  • No esquema "esperar", se tiê solicitar um dado mantido por tj e for mais nova, ela espera; se for mais velha, elimina tj para continuar sua execução.
  • Este método inverte a prioridade: agora as novas esperam enquanto as velhas têm o poder de eliminar.

Detecção de Deadlocks

  • Uma segunda abordagem para gerenciar deadlocks envolve um procedimento que analisa periodicamente o estado do sistema para detectar impasses.
  • O mecanismo recupera informações sobre a alocação atual dos itens de dados pelas transações ativas no sistema.

Algoritmos de Detecção

  • Para implementar algoritmos que detectam deadlocks, utiliza-se conceitos gráficos onde cada aresta representa uma relação entre duas transações (uma esperando pela outra).
  • Um exemplo simples ilustra como várias transações podem estar interligadas em um ciclo de espera mútuo.

Cenário Ilustrativo

  • No gráfico apresentado, várias transações estão esperando umas pelas outras. Por exemplo, a t1 está aguardando a liberação da trava da t2 enquanto outras também estão interconectadas nesse ciclo.

Controle de Concorrência e Recuperação de Transações

Problemas de Impasse nas Transações

  • A transação T4 não consegue ser executada devido a um ciclo de espera entre as transações, onde T2 aguarda por P4, P4 aguarda por T3, e assim por diante, resultando em um impasse.
  • O sistema entra em um estado travado e é necessário implementar ações de recuperação para resolver essa situação.

Estratégias de Recuperação

  • Uma das estratégias é "matar" uma transação, liberando suas travas para que outras possam prosseguir. Essa decisão deve considerar o custo mínimo para o sistema.
  • É importante avaliar qual transação pode ser removida sem causar grandes danos ao sistema ou aos resultados esperados pelas outras transações.

Considerações sobre Transações Atômicas

  • As transações devem ser atômicas; se forem revertidas, tudo que foi feito até aquele ponto precisa ser desfeito.
  • Em vez de matar completamente uma transação, pode-se reverter apenas até o momento em que ela obteve a trava, permitindo que continue aguardando sem perder todo seu progresso.

Evitando Inanição

  • Deve-se evitar situações onde uma transação é escolhida repetidamente como vítima para morrer (inanição), garantindo que isso ocorra apenas um número finito de vezes.

Controle de Concorrência e Isolamento

  • O controle de concorrência deve garantir condições adequadas para a implementação do recuperador de falhas e escalonamentos recuperáveis.
  • É crucial evitar cascatas durante a reversão das transações; se uma transação revertida afetou outra já executada, esta também precisará ser revertida.

Níveis de Isolamento

  • Os níveis de isolamento são fundamentais no controle da concorrência. Existem diferentes níveis que garantem consistências variadas: forte ou fraca.
  • O nível mais seguro é o serializado, que evita problemas como leitura suja e leitura fantasma. Cada tecnologia implementa seus próprios níveis permitidos.

Conclusão da Aula

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