uni
Una transazione deve essere un insieme di operazioni atomico (indivisibile) e definitivo, corretto anche in presenza di concorrenza e con effetti definitivi. La conclusione positiva di una transazione corrisponde ad un impegno a mantenere traccia del risultato in modo definitivo.
In altre parole una transazione identifica una unit’ elementare di lavoro svolta da un’applicazione, che deve rispettare particolari caratteristiche di correttezza, robustezza e isolamento: è quindi una successione di comandi e/o operazioni in esecuzione che forma un’unit’ logica di elaborazione sulla base di dati.
Una transazione comprende una o piĂą operazioni di accesso al Database:

  • read, lettura: interrogazioni
  • write, scrittura: inserimenti, cancellazioni, modifiche
    In termini più informatici una transazione è una parte di programma caratterizzata da inizio, una fine e al cui interno deve essere eseguita una sola volta uno dei seguenti comandi:
  • commit per terminare correttamente
  • rollback/abort per abortire la transazione
    In SQL:
  • begin-transaction
  • end transaction
    Esempio di transazione:
	start transaction;
	update ContoCorrente
		set Saldo = Saldo + 10
			where NumConto = 12202;
	if (NumConto > 0) commit work
		else rollback work;

Stato di una transazione

Una transazione entra nello stato attivo subito dopo essere iniziata, e ci rimane per tutta la sua esecuzione.
Quando termina entra nello stato di commit parziale, se è stata eseguita con successo e tutti i suoi aggiornamenti sul Database sono permanenti si sposta nello stato commit, in caso contrario entra nello stato fallito dal quale passa ad abortito quando tutti i suoi aggiornamenti al Database sono stati annullati.

ProprietĂ  delle transazioni

AtomicitĂ 

Una transazione è un’unità atomica di elaborazione. Non può lasciare il database in uno stato intermedio, se fallisce deve annullare i cambiamenti svolti.

Consistenza

La transazione deve rispettare i vincoli di integrità, se lo stato iniziale è corretto allora lo è anche lo stato finale.
Il sistema deve sempre essere in un ostato consistente, solo durante l’esecuzione della transazione può non esserlo.

Isolamento

La transazione non è influenzata dagli effetti delle altre transazioni concorrenti, l’esecuzione concorrente di una collezione di transazioni deve produrre un risultato uguale a quello che si otterrebbe con un’esecuzione sequenziale. Quindi una transazione non espone i suoi stati intermedi: si evita un effetto domino.

DurabilitĂ  (o persistenza)

Gli effetti di una transazione andata in commit sono persistenti e non vanno perduti quindi anche dopo un guasto possiamo sempre ripristinare il database ad uno stato consistente.

Sistema Transazionale

Un sistema che offre un meccanismo per la definizione e l’esecuzione di transazioni è detto sistema transazionale (OLTP), questo esegue transazioni per conto di applicazioni concorrenti.