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

114

Alguém pode fornecer uma explicação direta (mas não mais simples do que possível) de uma transação aplicada à computação (mesmo se copiada da Wikipedia)?

Vlad Gudim
fonte

Respostas:

239

Uma transação é uma unidade de trabalho que você deseja tratar como "um todo". Tem que acontecer na íntegra ou não.

Um exemplo clássico é a transferência de dinheiro de uma conta bancária para outra. Para fazer isso, você deve primeiro retirar o valor da conta de origem e, em seguida, depositá-lo na conta de destino. A operação deve ser totalmente bem-sucedida. Se você parar no meio do caminho, o dinheiro será perdido, e isso é muito ruim.

Em bancos de dados modernos, as transações também fazem algumas outras coisas - como garantir que você não possa acessar dados que outra pessoa escreveu pela metade. Mas a ideia básica é a mesma - as transações existem para garantir que, não importa o que aconteça, os dados com os quais você trabalha estarão em um estado razoável . Eles garantem que NÃO haverá uma situação em que o dinheiro seja retirado de uma conta, mas não depositado em outra.

Vilx-
fonte
Obrigado pelo exemplo muito simples
Nomadme
bela explicação!
Yan Myo Aung
81

Uma transação é uma forma de representar uma mudança de estado. O ideal é que as transações tenham quatro propriedades, comumente conhecidas como ACID:

  • Atômico (se a alteração for confirmada, acontecerá de uma só vez; você nunca verá "meia alteração")
  • Consistente (a mudança só pode acontecer se o novo estado do sistema for válido; qualquer tentativa de confirmar uma mudança inválida falhará, deixando o sistema em seu estado válido anterior)
  • Isolado (ninguém mais vê qualquer parte da transação até que seja confirmada)
  • Durável (uma vez que a mudança aconteceu - se o sistema diz que a transação foi confirmada, o cliente não precisa se preocupar em "limpar" o sistema para fazer a mudança "persistir")

Veja a entrada ACID da Wikipedia para mais detalhes.

Embora isso seja normalmente aplicado a bancos de dados, não precisa ser. (Em particular, consulte Software Transactional Memory .)

Jon Skeet
fonte
46

Aqui está uma explicação simples. Você precisa transferir 100 dólares da conta A para a conta B. Você pode fazer:

accountA -= 100;
accountB += 100;

ou

accountB += 100;
accountA -= 100;

Se algo der errado entre a primeira e a segunda operação no par, você tem um problema - 100 dólares desapareceram ou apareceram do nada.

Uma transação é um mecanismo que permite marcar um grupo de operações e executá-las de forma que todas sejam executadas (commit) ou o estado do sistema seja como se não tivessem iniciado a execução (rollback).

beginTransaction;
accountB += 100;
accountA -= 100;
commitTransaction;

irá transferir 100 dólares ou deixar ambas as contas no estado inicial.

sharptooth
fonte
31

"Uma série de instruções de manipulação de dados que devem ser totalmente concluídas ou totalmente reprovadas, deixando o banco de dados em um estado consistente"

Rad
fonte
2
Não apenas banco de dados. Podemos estender esse conceito a outros componentes - como serviço de enfileiramento ou estado de sistemas externos. Portanto, "Uma série de declarações de manipulação de dados que devem ser totalmente concluídas ou totalmente reprovadas, deixando o sistema em um estado consistente"
Michał Chaniewski
10

Uma transação é uma sequência de uma ou mais operações SQL que são tratadas como uma unidade.

Especificamente, cada transação parece ser executada isoladamente e, além disso, se o sistema falhar, cada transação é executada em sua totalidade ou não é totalmente executada.

O conceito de transações é motivado por duas preocupações completamente independentes. Um tem a ver com o acesso simultâneo ao banco de dados por vários clientes e o outro tem a ver com ter um sistema resiliente a falhas do sistema.

A transação suporta o que é conhecido como propriedades ACID:

  • A: Atomicidade;
  • C: Consistência;
  • I: Isolamento;
  • D: Durabilidade.
Mourad BENKDOUR
fonte
1

Eu sugeriria que uma definição de 'processamento de transações' seria mais útil, pois abrange as transações como um conceito na ciência da computação.

Da wikipedia:

Na ciência da computação, o processamento de transações é o processamento de informações que é dividido em operações individuais e indivisíveis, chamadas de transações. Cada transação deve ser bem-sucedida ou falhar como uma unidade completa; não pode permanecer em um estado intermediário.

http://en.wikipedia.org/wiki/Transaction_processing#Implementations

Adam Cooper
fonte
1

Além das respostas acima, deve-se observar que não há, pelo menos em teoria, nenhuma restrição quanto ao tipo de recursos envolvidos em uma transação.

Na maioria das vezes, é apenas um banco de dados, ou vários bancos de dados distintos, mas também é concebível que uma impressora participe de uma transação e possa fazer com que essa transação falhe, digamos, no caso de um atolamento de papel.

Erwin Smout
fonte
1

A transação pode ser definida como um conjunto de tarefas que são consideradas como unidade mínima de processamento. Cada unidade mínima de processamento não pode ser mais dividida.

As principais operações de uma transação são ler e escrever.

Todas as transações devem conter quatro propriedades comumente conhecidas como propriedades ACID com o objetivo de garantir a precisão, integridade e integridade dos dados.

rashedcs
fonte
0

Acho que uma transação é uma ação atômica em termos de DBMS.

isso significa que não pode ser separado. sim, em uma transição, pode haver várias instruções para o sistema executar. mas eles estão ligados para terminar uma única tarefa básica.

por exemplo. você precisa atravessar uma ponte (vamos tratar isso como uma transição) e, para fazer isso, digamos, você precisa de 100 passos. no geral, essas etapas não podem ser separadas. quando você tiver feito metade deles, há apenas duas opções para você: continuar a terminar todos eles e voltar ao ponto inicial. é como o resultado de uma transação: sucesso (confirmado) e falha (reversão)

fwoncn
fonte
0

A transação é uma unidade indivisível de processamento de dados - Todas as transações devem ter as propriedades ACID:

ou seja: Atomicidade, Consistência, Isolamento e Transação Durável são tudo ou nada, mas não são intermédios (isso significa que se você transferir seu dinheiro de uma conta para outra conta, uma conta terá que perder essa quantia e outra terá que ganhar essa quantia, mas se você transfere dinheiro de uma conta e outra conta ainda está vazia, isso não será uma transação)

Mohamed Seif
fonte