Cos'è una transazione di database?


Risposte:


239

Una transazione è un'unità di lavoro che si desidera trattare come "un tutto". Deve accadere per intero o per niente.

Un esempio classico è il trasferimento di denaro da un conto bancario a un altro. Per fare ciò devi prima prelevare l'importo dall'account di origine, quindi depositarlo nell'account di destinazione. L'operazione deve riuscire in pieno. Se ti fermi a metà strada, i soldi andranno persi, e questo è molto brutto.

Nei database moderni le transazioni fanno anche altre cose, come assicurarsi di non poter accedere ai dati scritti a metà da un'altra persona. Ma l'idea di base è la stessa: le transazioni sono lì per garantire che, qualunque cosa accada, i dati con cui lavori saranno in uno stato ragionevole . Garantiscono che NON ci sarà una situazione in cui il denaro viene prelevato da un conto, ma non depositato su un altro.


Grazie per l'esempio molto semplice
Nomadme

bella spiegazione!
Yan Myo Aung

81

Una transazione è un modo per rappresentare un cambiamento di stato. Le transazioni hanno idealmente quattro proprietà, comunemente note come ACID:

  • Atomico (se il cambiamento viene commesso, avviene in un colpo solo; non puoi mai vedere "mezzo cambiamento")
  • Coerente (la modifica può avvenire solo se il nuovo stato del sistema sarà valido; qualsiasi tentativo di eseguire il commit di una modifica non valida fallirà, lasciando il sistema nel suo precedente stato valido)
  • Isolato (nessun altro vede alcuna parte della transazione finché non viene confermata)
  • Durevole (una volta che la modifica è avvenuta - se il sistema dice che la transazione è stata confermata, il client non deve preoccuparsi di "svuotare" il sistema per rendere "stick" la modifica)

Vedi la voce ACID di Wikipedia per maggiori dettagli.

Sebbene questo sia tipicamente applicato ai database, non deve esserlo. (In particolare, vedi Software Transactional Memory .)


46

Ecco una semplice spiegazione. Devi trasferire 100 dollari dall'account A all'account B. Puoi eseguire le seguenti operazioni:

accountA -= 100;
accountB += 100;

o

accountB += 100;
accountA -= 100;

Se qualcosa va storto tra la prima e la seconda operazione nella coppia, hai un problema: o 100 dollari sono scomparsi o sono apparsi dal nulla.

Una transazione è un meccanismo che consente di contrassegnare un gruppo di operazioni ed eseguirle in modo tale che vengano eseguite tutte (commit) o ​​che lo stato del sistema sia come se non avessero iniziato l'esecuzione (rollback).

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

trasferirà 100 dollari o lascerà entrambi gli account nello stato iniziale.


31

"Una serie di istruzioni per la manipolazione dei dati che devono essere completate o fallite completamente, lasciando il database in uno stato coerente"


2
Non solo database. Possiamo estendere questo concetto ad altri componenti, come il servizio di accodamento o lo stato di sistemi esterni. Quindi, "Una serie di dichiarazioni sulla manipolazione dei dati che devono essere completate o
fallite

10

Una transazione è una sequenza di una o più operazioni SQL che vengono trattate come un'unità.

Nello specifico, ogni transazione sembra essere eseguita isolatamente e, inoltre, se il sistema fallisce, ogni transazione viene eseguita nella sua interezza o non tutta.

Il concetto di transazione è motivato da due preoccupazioni completamente indipendenti. Uno ha a che fare con l'accesso simultaneo al database da parte di più client e l'altro ha a che fare con un sistema resiliente agli errori di sistema.

La transazione supporta le cosiddette proprietà ACID:

  • A: atomicità;
  • C: consistenza;
  • I: isolamento;
  • D: durata.


1

Suggerirei che una definizione di "elaborazione delle transazioni" sarebbe più utile, poiché copre le transazioni come un concetto in informatica.

Da wikipedia:

In informatica, l'elaborazione delle transazioni è l'elaborazione delle informazioni che è suddivisa in operazioni individuali e indivisibili, chiamate transazioni. Ogni transazione deve riuscire o fallire come un'unità completa; non può rimanere in uno stato intermedio.

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


1

Oltre alle risposte di cui sopra, va notato che, almeno in teoria, non vi è alcuna restrizione sul tipo di risorse coinvolte in una transazione.

Il più delle volte si tratta solo di un database o di più database distinti, ma è anche concepibile che una stampante prenda parte a una transazione e possa causare il fallimento di tale transazione, ad esempio in caso di inceppamento della carta.


1

La transazione può essere definita come una raccolta di attività considerate come unità di elaborazione minima. Ogni unità di elaborazione minima non può essere ulteriormente suddivisa.

Le operazioni principali di una transazione sono leggere e scrivere.

Tutte le transazioni devono contenere quattro proprietà comunemente note come proprietà ACID allo scopo di garantire accuratezza, completezza e integrità dei dati.


0

Penso che una transazione sia un'azione atomica in termini di DBMS.

ciò significa che non può essere separato. sì, in una trascrizione possono esserci diverse istruzioni da eseguire per il sistema. ma sono legati insieme per portare a termine un singolo compito di base.

per esempio. devi attraversare un ponte (trattiamolo come una trascrizione) e per fare questo, diciamo, hai bisogno di 100 passaggi. nel complesso, questi passaggi non possono essere separati. quando ne hai fatti la metà, hai solo due scelte: continuare a finirli tutti e tornare al punto di partenza. è proprio come il risultato di una transazione: successo (commit) e fallimento (rollback)


0

La transazione è un'unità indivisibile di elaborazione dei dati -Tutte le transazioni devono avere le proprietà ACID:

cioè: atomicità, coerenza, isolamento e transazione durevole sono tutto o niente ma non intermedi (significa che se trasferisci i tuoi soldi da un conto a un altro conto, un conto deve perdere così tanto e l'altro deve guadagnare quell'importo, ma se trasferisci denaro da un account e un altro account è ancora vuoto che non sarà una transazione)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.