Controle de Concorrência e Recuperação em SGBDs

Classificado em Computação

Escrito em em português com um tamanho de 4,28 KB

Bloqueios em Duas Fases

Tipos de Bloqueios:

  • Binários: bloqueado ou desbloqueado.
  • Compartilhado / Exclusivo (leitura/escrita): Depende do tipo de acesso ao dado.

Geralmente existe um bloqueio para cada item de dado do banco de dados. Eles são usados como meio de sincronizar o acesso a estes dados por transações concorrentes.

Serialização com Bloqueio em Duas Fases

Uma transação segue o protocolo de bloqueio em duas fases se todas as operações read_lock e write_lock precedem a primeira operação unlock na transação.

  • Fase de Expansão (primeira fase): Novos bloqueios podem ser adquiridos, mas não podem ser liberados.
  • Fase de Encolhimento (segunda fase): Bloqueios existentes podem ser liberados, mas novos bloqueios não podem ser adquiridos.

Deadlock

Deadlock: Bloqueio de dados inversos em transações diferentes. Acontece quando uma transação T1 está em espera por uma transação T2 que entra em estado de espera pela transação T1.

Protocolos de Prevenção de Deadlock:

  • Esperar-Morrer: Transação mais nova é abortada e retomada depois que a mais velha terminar.
  • Ferir-Esperar: Transação mais velha apropria-se da mais nova.
  • Sem Espera: Se não puder obter um bloqueio, é abortada e reiniciada mais tarde.
  • Espera Cuidadosa: Só bloqueia se não houver outros bloqueios.

Starvation (Inanição)

Ocorre quando uma transação pode ficar infinitamente em espera. Isto pode acontecer com bloqueios parciais, nos quais cada transação tem prioridades.

Soluções:

  1. Esquema de espera imparcial (FIFO).
  2. Aumentar a prioridade da transação conforme o tempo de espera.

Ordenação por Timestamp

Timestamp: Identificador único criado pelo SGBD para identificar uma transação (número sequencial ou data/hora).

Algoritmo de Ordenação Básica por Timestamp:

  • READ_TS(x): Último timestamp que leu o item de dado “x” com sucesso.
  • WRITE_TS(x): Último timestamp que escreveu no item “x” com sucesso.

Se a transação T viola a ordem de execução dos timestamps, ela aborta e é ressubmetida ao sistema.

Multiversão

Protocolo para controle de concorrência que mantém os valores antigos de um item de dado quando ele é atualizado.

  • Mantém histórico das versões dos dados.
  • Mantém uma visão serializada dos itens de dados.

Desvantagem: Usa mais espaço de armazenamento.

Granularidade

Um item de dado pode ser: Registro, Campo, Bloco, Arquivo ou Banco de Dados.

  • Quanto maior a granularidade, menor a concorrência.
  • Quanto menor a granularidade, maior a necessidade de controle de concorrência.

Propriedades da Transação (ACID)

  • Atomicidade: Unidade atômica de processamento. Ou é executada na totalidade ou nada é executado.
  • Consistência: Leva o banco de dados de um estado consistente para outro estado consistente.
  • Isolamento: Executada como se estivesse isolada das demais.
  • Durabilidade: Alterações efetivadas devem persistir, não sendo perdidas em falhas.

Recuperação Baseada em Logs

LOG: Sequência de registros que mantém um histórico atualizado com todas as alterações executadas pelas transações.

  1. Atualizações Adiadas: Posterga a alteração real no banco até que a transação seja efetivada.
  2. Atualizações Imediatas: O banco pode ser atualizado antes da efetivação, exigindo mecanismos de undo em caso de falha.

Checkpoint

Registros inseridos periodicamente nos logs para forçar a escrita de blocos alterados da memória para o disco, otimizando o processo de recuperação ao limitar a necessidade de percorrer todo o log.

Entradas relacionadas: