Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Definizione dei livelli di isolamento
La "I" in ACID sta per isolamento. Il grado di isolamento di una transazione determina quanto o quanto poco altre transazioni simultanee possono influire sui dati su cui opera.
Lo standard SQL:1992Tx1 e Tx2:
Dirty read: si verifica quandoTx1modifica un elemento e quindiTx2legge quell'elemento prima cheTx1abbia completato la modifica. Pertanto, seTx1non riesce mai a eseguire il commit della modifica o a eseguire il rollback,Tx2ha letto un valore che non è mai entrato nel database.Non-repeatable read: si verifica quandoTx1legge un elemento, quindiTx2modifica o elimina quell'elemento e completa la modifica, quindiTx1tenta di rileggere l'elemento.Tx1ora legge un valore diverso rispetto a prima o rileva che l'elemento non esiste più.Phantom read: si verifica quandoTx1legge un insieme di elementi che soddisfano un criterio di ricerca, quindiTx2aggiunge un nuovo elemento che soddisfa il criterio di ricerca e quindiTx1ripete la ricerca.Tx1ora ottiene un insieme di elementi diverso rispetto a prima.
Ognuno di questi tre tipi di interazione può causare incoerenze nei dati risultanti in un database.
Lo standard SQL:1992 ha definito quattro livelli di isolamento che presentano garanzie diverse per quanto riguarda i tre tipi di interazione e le incoerenze che possono produrre. A tutti e quattro i livelli, è possibile garantire che una transazione venga eseguita completamente o non venga eseguita affatto:
READ UNCOMMITTED: consente tutti e tre i tipi di interazione (ovvero letture dirty, letture non ripetibili e letture fantasma).READ COMMITTED: le letture dirty non sono possibili, ma le letture non ripetibili e le letture fantasma lo sono.REPEATABLE READ: non sono possibili né le letture dirty né le letture non ripetibili, ma sono ancora possibili le letture fantasma.SERIALIZABLE: nessuno dei tre tipi di interazione è possibile.
Multiversion Concurrency Control (MVCC) consente un altro tipo di isolamento, ovvero l'isolamento SNAPSHOT . Ciò garantisce che una transazione funzioni su uno snapshot di dati esistente all'inizio della transazione e che nessun'altra transazione possa modificare tale snapshot.