Transazione (basi di dati)

Da Wikipedia, l'enciclopedia libera.
(Reindirizzamento da Transazione (database))

In informatica, una transazione è una sequenza di operazioni, che può concludersi con un successo o un insuccesso; in caso di successo, il risultato delle operazioni deve essere permanente o persistente, mentre in caso di insuccesso si deve tornare allo stato precedente all'inizio della transazione.

Le transazioni sono normalmente implementate da DBMS o da gestori di transazioni (application server o ambienti direttamente installati sulla macchina host dove risiede il database (es. CICS)).

Descrizione[modifica | modifica sorgente]

Una transazione, per essere tale, deve godere delle cosiddette proprietà ACID, particolarmente significative nei sistemi in cui possono essere eseguite più transazioni contemporaneamente.

Nei linguaggi di accesso ai DBMS, la gestione delle transazioni fa parte del Data Manipulation Language (linguaggio di manipolazione dei dati). Infatti, le modifiche allo schema del database o alle autorizzazioni non sono facilmente gestibili con transazioni.

Un utilizzo tipico delle transazioni è il seguente:

  • Prima di eseguire una transazione, si esegue un'istruzione di "inizio transazione".
  • Si eseguono le operazioni di interrogazione e modifica dei dati.
  • Se si riscontra qualche anomalia, si esegue un'istruzione detta di "rollback", per abortire la transazione.
  • Se si sono eseguite tutte le operazioni senza riscontrare anomalie, si esegue un'istruzione detta di "commit", per confermare la transazione.

Se il DBMS riscontra internamente qualche anomalia, esegue automaticamente un rollback.

Se il DBMS stesso termina bruscamente, per intervento esterno, o per un bug, o per spegnimento improvviso del computer, il DBMS, quando viene riattivato, esegue automaticamente il rollback delle transazioni che erano in corso al momento del crash.

Alcuni sistemi non prevedono un'istruzione di inizio transazione, perché quando ci si collega al DBMS, si inizia automaticamente una transazione, e quando si esegue un commit o un rollback, si inizia automaticamente un'altra transazione.

Se ci si scollega dal DBMS senza eseguire un commit, alcuni DBMS eseguono automaticamente un commit, altri un rollback.

Per implementare un transazione, tipicamente si usa un'apposita area d'appoggio del disco fisso in cui vengono copiati i dati originali appena prima di essere modificati. Quando viene eseguito un commit, i dati originali copiati vengono eliminati. Quando viene eseguito un rollback, si ricopiano indietro i dati originali copiati. Pertanto, un commit è più efficiente di un rollback.

Una possibile causa del fallimento di una transazione è l'insufficienza di spazio d'appoggio in memoria per copiare i dati originali.

Voci correlate[modifica | modifica sorgente]

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica