Gerenciamento de transações em SGBD: estados, tipos e ACID

⚡ Resumo Inteligente

O gerenciamento de transações de banco de dados trata uma ou mais operações de banco de dados como uma única unidade lógica que move o banco de dados de um estado consistente para outro. Ele se baseia em propriedades ACID, estados de transação definidos e agendamentos para manter o acesso simultâneo correto.

  • 🔁 Unidade Central: Uma transação agrupa operações de leitura e gravação relacionadas, de forma que elas sejam concluídas com sucesso ou falhem juntas, nunca pela metade.
  • 🧪 Propriedades ACID: Atomicidade, consistência, isolamento e durabilidade garantem resultados corretos mesmo em caso de falha ou concorrência.
  • 🚦 Estados da transação: Ativo, parcialmente confirmado, confirmado, falho e terminado descrevem o ciclo de vida de uma transação.
  • 👥 Por que a concorrência: Como o banco de dados é compartilhado, várias transações são executadas simultaneamente e não devem corromper os dados umas das outras.
  • 📋 Horários: Um cronograma ordena as operações de transações paralelas, preservando a sequência interna de cada transação.
  • 🔗 Serializabilidade: Um escalonamento concorrente é considerado correto quando seu resultado é igual a alguma execução serial, avaliada por conflito ou equivalência de visão.
  • ↩️ Recuperação: Uma transação com falha é revertida, de modo que suas gravações parciais nunca chegam ao banco de dados confirmado.

Gerenciamento de transações em SGBD

O que é uma transação de banco de dados?

A Transação de banco de dados Uma transação é uma unidade lógica de processamento em um SGBD (Sistema de Gerenciamento de Banco de Dados) que envolve uma ou mais operações de acesso ao banco de dados. Em resumo, as transações de banco de dados representam eventos reais de qualquer empresa.

Em um SGBD (Sistema de Gerenciamento de Banco de Dados), todas as operações de acesso ao banco de dados realizadas entre as instruções de início e fim da transação são consideradas uma única transação lógica. Durante a transação, o banco de dados permanece inconsistente. Somente após a confirmação da transação é que o estado muda de um estado consistente para outro.

Transação de banco de dados movendo-se entre estados consistentes
Transação de banco de dados

Informações sobre transações de banco de dados

  • Uma transação é uma unidade de programa cuja execução pode ou não alterar o conteúdo de um banco de dados.
  • O conceito de transação no SGBD é executado como uma unidade única.
  • Se as operações do banco de dados não atualizarem o banco de dados, mas apenas recuperarem dados, esse tipo de transação será chamada de transação somente leitura.
  • Uma transação bem-sucedida pode alterar o banco de dados de um ESTADO CONSISTENTE para outro.
  • As transações de um SGBD devem ser atômicas, consistentes, isoladas e duráveis.
  • Se o banco de dados estivesse em um estado inconsistente antes de uma transação, ele permaneceria nesse estado inconsistente após a transação.

Por que você precisa de concorrência em transações?

Um banco de dados é um recurso compartilhado. Ele é usado por muitos usuários e processos simultaneamente. Exemplos incluem sistemas bancários, sistemas de reservas ferroviárias e aéreas, monitoramento do mercado de ações e controle de estoque e caixas de supermercados.

Não gerenciar o acesso simultâneo pode criar problemas como:

  • Falhas de hardware e travamentos do sistema.
  • Execução simultânea da mesma transação, impasse, ou desempenho lento.

Controlar esse acesso compartilhado é tarefa de controle de concorrência, que usa bloqueios e carimbos de data/hora para intercalar transações com segurança. Antes disso, é útil saber pelos estados pelos quais uma transação passa.

Estados de transações

Os vários estados de um conceito de transação no SGBD estão listados abaixo:

Estado Descrição
Estado ativo Uma transação entra no estado ativo quando o processo de execução começa. Durante esse estado, operações de leitura ou gravação podem ser realizadas.
Parcialmente Comprometido Uma transação entra no estado parcialmente confirmado após o término da transação.
Estado Comprometido Quando a transação atinge o estado de confirmada, significa que sua execução foi concluída com sucesso e todas as alterações são registradas permanentemente no banco de dados.
Estado falido Uma transação é considerada falha quando qualquer uma das verificações falha ou se a transação for abortada enquanto estiver em estado ativo.
Estado encerrado O estado de uma transação é definido como encerrado quando a transação sai do sistema e não pode ser reiniciada.

Diagrama de transição de estados para uma transação de banco de dados

Vamos estudar um diagrama de transição de estado que destaca como uma transação se move entre esses vários estados.

  1. Assim que uma transação inicia sua execução, ela se torna ativa. Ela pode emitir uma operação de LEITURA ou ESCRITA.
  2. Assim que as operações de LEITURA e ESCRITA forem concluídas, a transação entra no estado parcialmente confirmado.
  3. Em seguida, alguns protocolos de recuperação precisam garantir que uma falha do sistema não resulte na impossibilidade de registrar permanentemente as alterações da transação. Se essa verificação for bem-sucedida, a transação é confirmada e entra no estado confirmado.
  4. Se a verificação falhar, a transação entra no estado de falha.
  5. Se a transação for abortada enquanto estiver ativa, ela passará para o estado de falha. A transação deverá ser revertida para desfazer o efeito das operações de escrita no banco de dados.
  6. O estado finalizado refere-se à transação que sai do sistema.

O que são propriedades ácidas?

Propriedades do ácido São utilizados para manter a integridade do banco de dados durante o processamento de transações. ACID em SGBD significa Atomicidade, Cpersistência, Isolao, e Dusabilidade.

  • Atomgelo: Uma transação é uma única unidade de operação. Você o executa inteiramente ou simplesmente não o executa. Não pode haver execução parcial.
  • Consistência: Depois que a transação for executada, ela deverá passar de um estado consistente para outro.
  • Isolamento: Uma transação deve ser executada isoladamente de outras transações. Durante a execução concorrente, os resultados intermediários de transações executadas simultaneamente não devem ser disponibilizados umas às outras.
  • Durabilidade: Após a conclusão bem-sucedida de uma transação, as alterações no banco de dados devem persistir, mesmo em caso de falhas do sistema.

Propriedades ACID em SGBD com exemplos

Abaixo segue um exemplo da propriedade ACID em um SGBD:

Transaction 1: Begin X=X+50, Y = Y-50 END
Transaction 2: Begin X=1.1*X, Y=1.1*Y END

A transação 1 está transferindo US$ 50 da conta X para a conta Y.

A transação 2 está creditando em cada conta um pagamento de juros de 10%.

Se ambas as transações forem submetidas juntas, não há garantia de que a Transação 1 será executada antes da Transação 2 ou vice-versa. Independentemente da ordem, o resultado será como se as transações ocorressem sequencialmente, uma após a outra.

Tipos de Transações

Com base nas áreas de aplicação:

  • Não distribuído versus distribuído.
  • Transações compensatórias.
  • Cronograma da transação.
  • Online versus em lote.

Com base nas ações:

  • Em duas etapas.
  • Restrito.
  • Modelo de ação.

Com base na estrutura:

  • Transações planas ou simples: consistem em uma sequência de operações primitivas executadas entre uma operação de início e uma operação de fim.
  • Transações aninhadas: uma transação que contém outras transações.
  • Fluxo de trabalho.

O que é um cronograma?

Um agendamento é um processo de criação de um único grupo de múltiplas transações paralelas, executando-as uma a uma. Ele deve preservar a ordem em que as instruções aparecem em cada transação. Se duas transações forem executadas ao mesmo tempo, o resultado de uma pode afetar o resultado da outra.

Exemplo

Initial Product Quantity is 10
Transaction 1: Update Product Quantity to 50
Transaction 2: Read Product Quantity

Se a Transação 2 for executada antes da Transação 1, serão lidas informações desatualizadas sobre a quantidade do produto. Portanto, cronogramas são necessários.

A execução paralela em um banco de dados é inevitável. No entanto, ela é permitida quando existe uma relação de equivalência entre as transações executadas simultaneamente. Essa equivalência pode ser de três tipos.

Equivalência de Resultados: Se duas programações apresentarem o mesmo resultado após a execução, diz-se que são programações com resultados equivalentes. Elas podem oferecer o mesmo resultado para alguns valores e resultados diferentes para outros. Por exemplo, uma transação atualiza a quantidade do produto enquanto outra atualiza os dados do cliente.

Equivalência de visualização: A equivalência de visualização ocorre quando as transações em ambos os cronogramas executam uma ação semelhante. Por exemplo, uma transação insere detalhes do produto na tabela de produtos, enquanto outra transação insere detalhes do produto na tabela de arquivos. A transação é a mesma, mas as tabelas são diferentes.

Equivalência de Conflito: Neste caso, duas transações atualizam ou visualizam o mesmo conjunto de dados. Há um conflito entre as transações, pois a ordem de execução afetará o resultado.

O que é serialização?

Serializabilidade é o processo de busca por um escalonamento concorrente cuja saída seja igual a um escalonamento serial, onde as transações são executadas uma após a outra. Dependendo do tipo de escalonamento, existem dois tipos de serializabilidade:

  • Serializabilidade de conflito.
  • Visualizar serializabilidade.

Os dois diferem na rigidez com que avaliam a equivalência, conforme resumido abaixo.

Aspecto Serializabilidade de Conflito Visualizar Serializabilidade
Base Ordem das operações conflitantes Relações de leitura e redação final
Testar O grafo de precedência deve ser acíclico. Veja a equivalência a um cronograma serial
Rigor Mais rigoroso, um subconjunto Mais abrangente, inclui escritores cegos
Custo para verificar Eficiente Computacionalmente difícil

Toda programação serializável por conflito também é serializável por visão, mas o inverso não é verdadeiro, razão pela qual a serializabilidade por conflito é o teste prático que um SGBD aplica.

Perguntas Frequentes

O comando `commit` torna as alterações de uma transação permanentes no banco de dados. O comando `rollback` desfaz todas as alterações feitas desde o início da transação, retornando o banco de dados ao estado consistente que existia antes do início da transação.

AtomA atomicidade garante que, se ocorrer uma falha durante a transação, o trabalho parcial seja descartado, de modo que a transação seja tratada como se nunca tivesse sido executada. A durabilidade, por sua vez, protege o trabalho já realizado após a recuperação.

A IA analisa os tempos de espera de bloqueio e os gráficos de impasse para identificar as transações que bloqueiam outras e, em seguida, recomenda uma alteração no nível de isolamento ou no índice que reduza a contenção sem comprometer a correção.

Até certo ponto. Ao aprender os padrões de solicitação de bloqueio que precederam impasses anteriores, um modelo pode sinalizar uma combinação de transações de risco antecipadamente, permitindo que o agendador atrase ou reordene as transações antes que um ciclo se forme.

Um escalonamento serial executa uma transação completamente antes que a próxima comece, portanto, nenhuma intercalação pode corromper os dados. É lento, razão pela qual o objetivo é um escalonamento concorrente serializável a ele.

Resuma esta postagem com: