Sobes.tech
Middle

Quali sono i tipi di isolamento delle transazioni?

sobes.tech AI

Risposta dell'AI

L’isolamento delle transazioni determina quanto una transazione può vedere le modifiche intermedie di altre transazioni che vengono eseguite in parallelo.

Lo standard SQL definisce quattro livelli di isolamento:

  1. Read Uncommitted (Lettura non confermata): Il livello più basso. Una transazione può leggere modifiche non confermate di altre transazioni (lettura sporca).
  2. Read Committed (Lettura confermata): La transazione può leggere solo dati che sono stati confermati da altre transazioni. Evita la "lettura sporca".
  3. Repeatable Read (Lettura ripetibile): La transazione garantisce che i dati letti durante la transazione non cambieranno in letture successive. Evita la "lettura sporca" e la "lettura non ripetibile". Possono verificarsi "fantasmi".
  4. Serializable (Serializzabile): Il livello più alto di isolamento. Garantisce che le transazioni parallele vengano eseguite come se fossero sequenziali. Evita tutti i fenomeni indesiderati: "lettura sporca", "lettura non ripetibile" e "fantasmi".

Fenomeni indesiderati durante l’esecuzione parallela delle transazioni:

  • Dirty Read (Lettura sporca): La transazione A legge dati modificati dalla transazione B che non sono ancora stati confermati. Se la transazione B annulla le modifiche, la transazione A lavorerà con dati errati.
  • Non-repeatable Read (Lettura non ripetibile): La transazione A legge gli stessi dati due volte, ma tra le due letture, la transazione B conferma una modifica a quei dati. Di conseguenza, la transazione A ottiene valori diversi.
  • Phantom Read (Lettura di fantasmi): La transazione A esegue una query che restituisce un insieme di righe. La transazione B conferma l’inserimento o la cancellazione di righe che soddisfano i criteri della query A. Quando si esegue di nuovo la stessa query, la transazione A ottiene un insieme diverso di righe.

Tabella riassuntiva dei fenomeni indesiderati per livelli di isolamento:

Livello di isolamento Lettura sporca Lettura non ripetibile Fantasmi
Read Uncommitted
Read Committed No
Repeatable Read No No
Serializable No No No

La scelta del livello di isolamento influisce sulle prestazioni e sulla correttezza del funzionamento dell’applicazione. Più alto è il livello di isolamento, maggiori sono i costi aggiuntivi.