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.

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.

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. |
Vamos estudar um diagrama de transição de estado que destaca como uma transação se move entre esses vários estados.
- Assim que uma transação inicia sua execução, ela se torna ativa. Ela pode emitir uma operação de LEITURA ou ESCRITA.
- Assim que as operações de LEITURA e ESCRITA forem concluídas, a transação entra no estado parcialmente confirmado.
- 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.
- Se a verificação falhar, a transação entra no estado de falha.
- 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.
- 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.

