O que é uma transação de banco de dados?
Alguém pode fornecer uma explicação simples (mas não mais simples do que possível) de uma transacção como aplicada à computação (mesmo que copiada da Wikipédia)?
12 answers
Em bases de dados modernas, as transacções também fazem algumas outras coisas - como garantir que você não pode acessar dados que outra pessoa escreveu a meio caminho. Mas a idéia 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 sensí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.
Uma transacção é uma forma de representar uma mudança de Estado. As transacções têm idealmente quatro propriedades, vulgarmente conhecidas como ACID:
- Atómico (se a mudança é cometida, acontece de uma só vez; nunca se pode ver "meia mudança")
- consistente (a alteração só pode acontecer se o novo estado do sistema for válido; qualquer tentativa de cometer uma alteração inválida irá falhar, deixando o sistema no seu estado válido anterior)
- isolado (ninguém mais vê nenhuma parte da transacção até ser comprometida)
- durável (uma vez que a mudança aconteceu-se o sistema diz que a transacção foi comprometida, o cliente não precisa de se preocupar com "descarga" o sistema para fazer a mudança "stick")
Veja o item do Wikipedia ACID para mais detalhes.
Embora isto seja normalmente aplicado a bases de dados, não tem de ser. (Em particular, ver memória transacional de Software .)
accountA -= 100;
accountB += 100;
Ou
accountB += 100;
accountA -= 100;
Se algo correr mal entre a primeira e a segunda operação no par, você tem um problema-ou 100 dólares desapareceram, ou apareceram do nada.
Uma transacção é um mecanismo que lhe permite marcar um grupo de operações e executá-las de tal forma que todas elas executam (commit), ou a o estado do sistema será como se eles não tivessem começado a executar (rollback).
beginTransaction;
accountB += 100;
accountA -= 100;
commitTransaction;
Ou transferes 100 dólares ou deixas ambas as contas no estado inicial.
"uma série de declarações de manipulação de dados que devem estar completamente completas ou completamente falhadas, deixando a base de dados num estado consistente"
Uma transacção é uma sequência de uma ou mais operações SQL que são tratadas como uma unidade.
Especificamente, cada transacção parece funcionar isoladamente e, além disso, se o sistema falhar, cada transacção é executada na sua totalidade ou não na totalidade.
O conceito de transacções é motivado por duas preocupações completamente independentes. Um tem a ver com o acesso simultâneo à base de dados por vários clientes, e o outro tem que fazer com um sistema que é resiliente a falhas do sistema.A transacção suporta o que é conhecido como propriedades ácidas:
- A: Atomicidade;
- C: Consistência;
- I: Isolamento;
- D: Durabilidade.
Propriedades das transacções:
As transacções têm as seguintes quatro propriedades-padrão, normalmente referidas pelo acrónimo ACID:
Atomicity: ensures that all operations within the work unit are completed
successfully; otherwise, the transaction is aborted at the point of
failure, and previous operations are rolled back to their former state.
Consistency: ensures that the database properly changes states upon a successfully
committed transaction.
Isolation: enables transactions to operate independently of and transparent to
each other.
Durability: ensures that the result or effect of a committed transaction persists
in case of a system failure.
Controlo Das Transacções:
Existem os seguintes comandos usados para controlar as transacções:
COMMIT: to save the changes.
ROLLBACK: to rollback the changes.
SAVEPOINT: creates points within groups of transactions in which to ROLLBACK
SET TRANSACTION: Places a name on a transaction.
Http://en.wikipedia.org/wiki/Database_transaction
http://en.wikipedia.org/wiki/ACID
ÁCIDO = UMtomicity, Consistency, Isolation, Durability
Quando desejar que vários recursos transacionais estejam envolvidos numa única transacção, terá de usar algo como uma solução de commit de duas fases. o XA {[3] } é bastante apoiado.
Da Wikipédia:
Em Ciência da computação, processamento de transações é Processamento de informação que é dividido em operações individuais e indivisíveis, chamadas transações. Cada transação deve ter sucesso ou falhar como uma unidade completa; não pode permanecer em um intermediário estado.
Http://en.wikipedia.org/wiki/Transaction_processing#Implementations
Por exemplo. você precisa andar através de uma ponte (vamos tratar isso como uma transcrição), e para fazer isso, digamos, você precisa de 100 passos. no geral, estes passos não podem ser separados. quando tiveres feito metade deles, só há duas opções. para você: continue a terminá-los todos, e volte ao ponto de partida. é como o resultado de uma transação: sucesso (comprometido ) e fracasso (rollback)
A transacção é uma unidade indivisível de processamento de dados - Todas as transacções devem ter as propriedades ácidas:
Ou seja: atomicidade, consistência, isolamento e durabilidade A transacção é tudo ou nada, mas não intermidiata (significa que, se transferir o seu dinheiro de uma conta para outra conta,uma conta terá de perder tanto e outra terá de ganhar esse montante,mas se transferir dinheiro de uma conta e outra ainda estiver vazia, isso não será uma transacção)
A transacção pode ser definida como uma colecção de tarefas que são consideradas como unidade de processamento mínima. Cada unidade de processamento mínima não pode ser dividida mais.
A principal operação de uma transacção é ler e escrever.
Todas as transacções devem conter quatro propriedades conhecidas como propriedades ácidas, com o objectivo de garantir a exactidão , a integralidade e a integridade dos dados.