Le transazioni
Una transazione è un insieme di enunciati SQL che vengono eseguiti uno dietro un altro senza interruzione. Possiamo usare le transazioni per essere sicuri che le registrazioni convolte in una operazione non vengano modificate dall'intervento di un altro client proprio mentre ci stiamo lavorando, dato che MySQL blocca l'accesso ai dati in base ai singoli enunciati SQL in modo da prevenire qualsiasi interferenza fra client (due client, per esempio, non possono aggiornare contemporaneamente la stessa registrazione). Ma un blocco a livello di singolo enunciato non è sempre sufficiente a garantire che le operazioni su database raggiungano il risultato sperato, dato che alcune operazioni possono essere eseguite solo con l'impiego di parecchi enunciati e in questo caso, operazioni differenti possono interferire fra di loro. Un insieme di enunciati considerati come una singola transazione vengono eseguiti come singola unità di istruzioni, non influenzabile dalle operazioni compiute da altri client in un ambiente multi-utente come quello di MySQL.
La gestione delle transazioni include anche le funzioni di [i]commit (esecuzione)[/i] e di [i]rollback (annullamento)[/i], che permettono di forzare l'esecuzione di tutti gli enunciati come singola unità logica di istruzioni, oppure di annullarne gli effetti. In pratica, se la transazione ha successo potete essere sicuri che tutti gli enunciati in essa compresi sono stati eseguiti con successo, mentre se uno qualsiasi di esso fallisce, tutti gli enunciati eseguiti fino a quel momento vengono annullati, riportando il database allo stato precedente a quello di inizio transazione.
I sistemi transazionali sono normalmete caratterizzati dalle proprietà che vengono riassunte nell'acronimo ACID ([b]Atomico Consistente Isolato Durevole[/b]) con riferimento alle proprietà che tutte le transazioni dovrebbero avere:[list][list=][b]Atomicità[/b]. Gli enunciati di una transazione formano una unità logica. Non è possibile eseguirne sono una parte.[/list=][list=][b]Consistenza[/b]. Il database risulta consistente prima e dopo l'esecuzione di una transazione. In altre parole la transazione non crea alcuna confusione all'interno del database.[/list=][list=][b]Isolamento[/b]. Una transazione non ha alcun effetto su un'altra.[/list=][list=][b]Durevolezza[/b]. Dopo che una transazione è stata eseguita nella sua interezza i suoi effetti vengono registrati nel database in maniera permanente.[/list=][/list]Alcuni tipi di tabelle in MySQL non sono transazionali ([b]ISAM, MyISAM[/b] e [b]HEAP[/b]), mentre alcuni altri lo sono ([b]DBD[/b] e [b]InnoDB[/b]).
Tenere sempre presente che potremmo incappare in degli errori se non facciamo [b]attenzione alle istanze poste[/b] dalle transazioni.
Altri articoli
Colonne di tabelle MySQL
Pubblicato da: in data alle ore 17:23
leggi... | letture 1874 | commenti 0 |