Transazione

Una transazione è un'unità logica di elaborazione che accede a un database, vista come un'operazione singola e indivisibile

DBMS Single-User vs Multi-User

Multiprogrammazione e interleaving

La multiprogrammazione permette a più transazioni di essere eseguite simultaneamente, anche su sistemi con una sola CPU, attraverso l'interleaving (esecuzione alternata delle operazioni)

Su sistemi multiprocessore, l'esecuzione è realmente parallela

Operazioni sulle transazioni

Entrambe le operazioni coinvolgono la gestione di buffer in memoria e trasferimenti da/verso il disco


Problemi con transazioni concorrenti

  1. Aggiornamento perso: una transazione sovrascrive le modifiche di un'altra
  2. Aggiornamento temporaneo (lettura sporca): una transazione legge dati non ancora confermati da un'altra transazione che poi fallisce
  3. Totalizzazione scorretta: una transazione calcola aggregazioni su dati parzialmente aggiornati
  4. Letture non ripetibili: una transazione legge due volte lo stesso dato, ma il valore cambia tra le letture a causa di un'altra transazione

Recovery delle transazioni

Il sistema deve garantire che una transazione sia completata interamente o annullata completamente