Neste capítulo
- Conceitos de transação (
BEGIN,COMMIT,ROLLBACK)- Propriedades ACID
- Controle de concorrência e bloqueios
Em um ambiente de banco de dados moderno, a integridade e a consistência dos dados são de suma importância, especialmente quando múltiplos usuários ou aplicações acessam e modificam as informações simultaneamente. Sem mecanismos robustos para gerenciar essas interações, o banco de dados se tornaria caótico, com dados inconsistentes e operações perdidas.
Este capítulo abordará os conceitos fundamentais de transações e controle de concorrência, que são a espinha dorsal da confiabilidade de qualquer sistema de banco de dados. Compreender esses mecanismos é crucial para garantir que suas operações sejam seguras e que seus dados permaneçam válidos, mesmo em cenários de alta demanda.
BEGIN, COMMIT, ROLLBACK)Uma transação é uma sequência de uma ou mais operações de banco de dados que são tratadas como uma única unidade de trabalho lógica e atômica. A ideia central é que o conjunto de operações deve ser concluído com sucesso ou, em caso de falha, completamente desfeito.
O PostgreSQL (e o padrão SQL) fornece comandos claros para gerenciar o ciclo de vida de uma transação:
BEGIN ou START TRANSACTION: Comando para iniciar uma nova transação. A partir deste ponto, todas as alterações de dados (INSERT, UPDATE, DELETE) são temporárias e visíveis apenas dentro da transação, não sendo permanentes no banco de dados.COMMIT: Comando para confirmar a transação. Todas as alterações feitas desde o BEGIN são salvas de forma permanente e se tornam visíveis para outras transações.ROLLBACK: Comando para desfazer a transação. Todas as alterações realizadas desde o BEGIN são canceladas, e o banco de dados retorna ao seu estado original, como se a transação nunca tivesse existido.Considere a transferência de R$ 100,00 da conta de João para a conta de Maria. Esta operação é crítica e deve ser executada como uma única unidade:
João.Maria.Se a primeira operação for concluída, mas a segunda falhar por algum motivo, a transação deve ser desfeita para evitar que o dinheiro de João desapareça.
BEGIN;
-- Passo 1: Retira o valor da conta de João
UPDATE contas SET saldo = saldo - 100.00 WHERE nome = 'João';
-- Passo 2: Adiciona o valor na conta de Maria
UPDATE contas SET saldo = saldo + 100.00 WHERE nome = 'Maria';
-- Se ambos os passos foram executados sem erros
COMMIT;
-- Se algo falhou em qualquer ponto
-- ROLLBACK;
O uso de BEGIN e COMMIT garante que as duas operações sejam realizadas como uma só. Se houver um erro, o ROLLBACK assegura a consistência dos dados.
O acrônimo ACID é a sigla para as quatro propriedades que definem a confiabilidade de um sistema de gerenciamento de banco de dados. Um SGBD compatível com ACID garante que cada transação seja processada de maneira segura, independentemente de falhas no sistema ou de operações concorrentes.
UNIQUE e CHECK) sejam mantidas.COMMIT), suas alterações são permanentes e não podem ser perdidas, mesmo em caso de falhas do sistema, como uma queda de energia. O SGBD garante que os dados confirmados sejam escritos em armazenamento persistente.