Definizione dei livelli di isolamento - Amazon Neptune

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 SQLstandard:1992 ha creato un vocabolario per descrivere i livelli di isolamento. Definisce tre tipi di interazioni (che chiama fenomeni) che possono verificarsi tra due transazioni simultanee, Tx1 e Tx2:

  • Dirty read: si verifica quando Tx1 modifica un elemento e quindi Tx2 legge quell'elemento prima che Tx1 abbia completato la modifica. Pertanto, se Tx1 non riesce mai a eseguire il commit della modifica o a eseguire il rollback, Tx2 ha letto un valore che non è mai entrato nel database.

  • Non-repeatable read: si verifica quando Tx1 legge un elemento, quindi Tx2 modifica o elimina quell'elemento e completa la modifica, quindi Tx1 tenta di rileggere l'elemento. Tx1 ora legge un valore diverso rispetto a prima o rileva che l'elemento non esiste più.

  • Phantom read: si verifica quando Tx1 legge un insieme di elementi che soddisfano un criterio di ricerca, quindi Tx2 aggiunge un nuovo elemento che soddisfa il criterio di ricerca e quindi Tx1 ripete la ricerca. Tx1 ora 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.

SQLLo standard:1992 ha definito quattro livelli di isolamento che hanno diverse garanzie in termini di tre tipi di interazione e delle incongruenze 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.

Il controllo della concorrenza multiversione (MVCC) consente un altro tipo di isolamento, vale a dire 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.