Transazioni

Una transazione è un’unità logica di elaborazione che corrisponde a una serie di operazioni fisiche elementari (letture/scritture) sul DB.

In una transazione tutte le operazioni elementari devono essere eseguite.

Una transazione può essere vista come una sequenza di operazioni elementari di lettura (R) e scrittura (W) di oggetti (tuple) del DB che, a partire da uno stato iniziale consistente del DB, porta il DB in un nuovo stato finale consistente. In generale gli stati intermedi in cui si trova il DB non è richiesto che siano consistenti.Nel modello considerato una transazione (il cui inizio viene indicato nel seguito dalla parola chiave BEGIN può avere solo 2 esiti:

  • Terminare correttamente: Questo avviene solo quando l’applicazione, dopo aver eseguito tutte le proprie operazioni, esegue una particolare istruzione SQL, detta COMMIT , che comunica ufficialmente al DBMS il termine delle operazioni
  • Terminare non correttamente (anticipatamente); sono possibili 2 casi:
    • È la transazione che, per qualche motivo, decide che non ha senso continuare e quindi “abortisce” eseguendo l’istruzione SQL ROLLBACK
    • È il sistema che non è in grado (ad es. per un guasto o per la violazione di un vincolo) di garantire la corretta prosecuzione della transazione, che viene quindi abortita.

Se per qualche motivo la transazione non può terminare correttamente la sua esecuzione il DBMS deve “disfare” (UNDO) le eventuali modifiche da essa apportate al DB.

Il modello di transazioni usato dai DBMS è in realtà più articolato; in particolare è possibile definire dei cosiddetti “savepoint”, che vengono utilizzati da una transazione per disfare solo parzialmente il lavoro svolto.

In alcuni DBMS esiste "l'AUTOCOMMIT", cioè ogni istruzione SQL è una transazione a sé.

ACID

L’acronimo ACID indica le 4 proprietà che il DBMS deve garantire che valgano per ogni transazione:

  • Atomicity = una transazione è un’unità di elaborazione. Il DBMS garantisce che la transazione venga eseguita come un tutt’uno
  • Consistency = una transazione lascia il DB in uno stato consistente. Il DBMS garantisce che nessuno dei vincoli di integrità del DB venga violato.
  • Isolation = una transazione esegue indipendentemente dalle altre. Se più transazioni eseguono in concorrenza, il DBMS garantisce che l’effetto netto è equivalente a quello di una qualche esecuzione sequenziale delle stesse.
  • Durability = gli effetti di una transazione che ha terminato correttamente la sua esecuzione devono essere persistenti nel tempo. Il DBMS deve proteggere il DB a fronte di guasti

Transazione ben formata

Una transazione è ben formata se:

  • Inizia con uno start
  • Viene conclusa con una end transaction:
  • Inoltre può finire in anticipo per un abort

results matching ""

    No results matching ""