O que é e pra que servem as transações de banco de dados?
Published: 2023-01-12 02:00:49

Os bancos de dados são conhecidos por processar milhões de solicitações simultâneas por segundo. Em muitos casos, essas solicitações tocam o mesmo item no banco de dados. Imagine, por exemplo, que você está tentando comprar um estoque limitado de seu jogo favorito em um site de comércio eletrônico online. Suponha que todos na loja online coloquem o jogo em seus carrinhos ao mesmo tempo e prossigam para o checkout. Nesse caso, o estoque restante precisa ser calculado com precisão - nem acima nem abaixo. Normalmente, uma transação de banco de dados é usada nesses cenários. Então, o que é uma transação de banco de dados?


Resumindo, uma transação de banco de dados é uma sequência de múltiplas operações executadas em um banco de dados, e todas serviram como uma única unidade lógica de trabalho — ocorrendo totalmente ou não. Em outras palavras, nunca há um caso em que apenas metade das operações sejam realizadas e os resultados salvos. Quando uma transação de banco de dados está em andamento, o estado do banco de dados pode ficar temporariamente inconsistente, mas quando a transação é confirmada ou finalizada, as alterações são aplicadas.

Para explicar o conceito de uma transação de banco de dados, vamos usar um exemplo típico de transferência de dinheiro entre a Conta A e a Conta B. Digamos que você queira mover 20 reais da Conta A para a Conta B. Esta ação pode ser dividida na seguinte simples operações:
Crie um registro para transferir 20 da Conta A para a Conta B. Isso geralmente é chamado de início de uma transação de banco de dados.
Leia o saldo da Conta A.
Subtraia 20 reais do saldo da Conta A.
Leia o saldo da Conta B.
Adicione 20 reais de crédito à Conta B.

Agora, se seu banco de dados estiver executando esta transação como uma unidade atômica inteira e o sistema falhar devido a uma queda de energia, a transação poderá ser desfeita, revertendo seu banco de dados ao seu estado original. Normalmente, um termo como rollback refere-se ao processo que desfaz quaisquer alterações feitas pela transação, e o termo commit é usado para se referir a uma alteração permanente feita pela transação.
Como funcionam as transações do banco de dados?

Antes de aprendermos como as transações de banco de dados funcionam, vamos explorar por que elas são necessárias em primeiro lugar.

As falhas do sistema são inevitáveis e, nesses casos, uma transação fornece uma maneira de garantir que o resultado seja confiável e consistente. 

Isso significa que o estado do banco de dados reflete todas as alterações transacionais confirmadas antes do ponto de falha e que as transações que estavam em andamento no ponto de falha são revertidas de forma limpa.

Quando várias solicitações simultâneas atingem o servidor de banco de dados, alterando os mesmos dados subjacentes simultaneamente, a transação deve isolar as solicitações umas das outras para evitar conflitos.

Durante seu ciclo de vida, uma transação de banco de dados passa por vários estados. Esses estados são chamados de estados de transação e geralmente são um dos seguintes:

**Estados ativos**: É o primeiro estado durante a execução de uma transação. Uma transação está ativa enquanto suas instruções (operações de leitura ou escrita) forem executadas.

**Parcialmente confirmada**: uma alteração foi executada neste estado, mas o banco de dados ainda não confirmou a alteração no disco. Nesse estado, os dados são armazenados no buffer de memória e o buffer ainda não foi gravado no disco.

**Confirmado**: Neste estado, todas as atualizações de transações são armazenadas permanentemente no banco de dados. Portanto, não é possível reverter a transação após esse ponto.

**Failed**: Se uma transação falhar ou tiver sido abortada no estado ativo ou no estado parcialmente confirmado, ela entrará em um estado de falha.
Estado encerrado: Este é o último e último estado da transação após um estado confirmado ou abortado. Isso marca o fim do ciclo de vida da transação do banco de dados.