Entendendo transações em SGBDs

Transações ou operações são compostas por uma série de instruções e. g. escrita e leitura de dados para completar um determinado objetivo.

Exemplo:

read(x)
x = x * 2
write(x)

Sistemas Gerenciadores de Banco de Dados(SGBDs) geralmente são sistemas multi-usuários que precisam ter alta disponibilidade e velocidade no processamento de dados, para isso o banco executa transações de forma intercalada(concorrentemente), para considerar que uma transação foi processada corretamente por meio de concorrência ela deverá produzir o mesmo resultado de uma execução sequencial. Para assegurar isso um gerenciador de concorrências utiliza técnicas de controle de concorrência para garantir que transações sejam executadas da maneira correta.

Os principais problemas de transações executadas por meio de concorrência são:

  • Atualização perdida(Lost Update) – O processamento realizado por uma transação Ty é perdido porque outra transação Tx sobrescreveu os dados sem considerar Ty.
  • Leitura suja(Dirty Read) – Quando um dado de uma transação Tx foi escrito e Tn transações utilizam esse dado e escrevem também e depois a transação Tx é abortada.
  • Agregação incorreta – Quando uma transação Tx calcula utilizando uma função de agregação enquanto uma ou mais transações estão atualizando itens correspondentes aos agregados.
  • Leitura não-repetitiva – Quando uma transação Tx lê um dado X duas ou mais vezes e entre essas leituras o dado foi atualizado por uma transação Ty.

Uma transação também é sempre monitorada pelo SGBD em relação ao seu estado, necessidade de interrupção, tratamento etc.

Estados de uma transação: Ativa, Em processo de efetivação, Efetivada, Em processo de aborto e Concluída.

Com base em um Grafo de transição de estados é decidido a necessidade de interrupção e qual o tratamento se ele existir.

Propriedades de uma Transação

Atomicidade: Todas as instruções da transação devem acontecer ou nenhuma deve acontecer. Propriedade que visa preservar a integridade. O subsistema responsável por analisar e desfazer as instruções parcialmente executadas é o de recuperação.
Consistência: Uma transação deve perdurar a consistência do banco, é responsabilidade conjunta do Administrador do Banco de Dados e do subsistema de recuperação de falhas.
Isolamento: Uma transação não deve sofrer interferências de outras transações que estão executando concorrentemente. Responsabilidade do sistema de controle de concorrência.
Durabilidade: Garantir que mudanças realizadas com sucesso por uma transação persistam no BD. Responsabilidade do sistema de recuperação.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *