Apri il menu principale

Transazione (basi di dati)

sequenza di operazioni di un database

Nella teoria delle basi di dati, il termine transazione indica una qualunque sequenza di operazioni lecite che, se eseguita in modo corretto, produce una variazione nello stato di una base di dati. 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 devono possedere le seguenti proprietà logiche: Atomicity, Consistency, Isolation, e Durability (in acronimo ACID).

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

DescrizioneModifica

Una transazione, per essere tale, deve godere delle cosiddette proprietà ACID, in particolar modo nei sistemi cui possono essere eseguite più transazioni contemporaneamente. La transazione è un sistema di tipo on/off che non può concludersi in uno stato intermedio,

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. Si dice che il DBMS è transazionale se è capace di garantire e mantenere l'integrità dei dati, vale a dire se la transazione non può finire in uno stato intermedio (sistema on/off). Le transazioni in linguaggio SQL iniziano con un'istruzione BEGIN TRAN e si concludono con un COMMIT TRAN (con eventuale notifica di transazione completata correttamente), oppure con un ROLLBACK TRAN, ad esempio in caso di errore (abort) e ripristino dello stato iniziale (in modo automatico o manualmente)[1].

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 abort, per abortire la transazione che produce un meccanismo di "rollback".
  • Se si sono eseguite tutte le operazioni senza riscontrare anomalie, si esegue un'istruzione detta di "commit", per confermare la transazione.

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 (autocommit), altri un rollback.

Per implementare una 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.

SottotransazioniModifica

Una transazione si considera come un insieme di sottotransazioni. Ogni sottotransazione è composta da un'operazione di read r o di write w.

 

ScheduleModifica

Una sequenza di esecuzione di un insieme di transazioni è detta schedule. Uno schedule è seriale se una transazione termina prima che la successiva inizi.

Tipologie di abortModifica

Una transazione può terminare per un abort. Esistono due tipi di abort:

  • Abort a runtime, che viene lanciato all'interno dell'esecuzione della transazione quando il DBMS riscontra qualche anomalia, come ad esempio una divisione per 0 ed esegue automaticamente un rollback;
  • Abort di sistema, che viene lanciato nel caso in cui si verifichi un errore di sistema come l'interruzione brusca del DBMS, 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.

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

NoteModifica

  1. ^ (EN) Cosa sono BEGIN TRAN, ROLLBACK TRAN, e COMMIT TRAN, su mssqltips.com. URL consultato il 22 aprile 2019 (archiviato il 18 aprile 2014).

Voci correlateModifica

Altri progettiModifica

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