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:
-
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.
-
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.
-
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.
-
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;