Sobes.tech
Senior

Quali livelli di isolamento delle transazioni di PostgreSQL conosci?

sobes.tech AI

Risposta dell'AI

In PostgreSQL, ci sono quattro livelli di isolamento delle transazioni definiti dallo standard SQL:

  1. Read Uncommitted — il livello di isolamento più basso. Permette di leggere dati non ancora confermati (dirty reads). In PostgreSQL, si comporta praticamente come Read Committed, poiché non supporta i dirty reads.

  2. Read Committed — livello predefinito. La transazione vede solo i dati che sono stati confermati al momento di ogni singola query. Possono verificarsi modifiche da altre transazioni tra le query all'interno della stessa transazione.

  3. Repeatable Read — la transazione vede un'istantanea dei dati al momento dell'inizio. Tutte le query all'interno della transazione vedono gli stessi dati, anche se altre transazioni li modificano e confermano. Previene le letture non ripetibili, ma consente le letture fantasma.

  4. Serializable — il livello di isolamento più rigoroso. Garantisce una serializzazione completa delle transazioni, prevenendo le letture fantasma e assicurando un comportamento equivalente all'esecuzione sequenziale delle transazioni.

Esempio di configurazione del livello di isolamento:

BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- Operazioni SQL
COMMIT;