Ricerca…


Osservazioni

Ho trovato questo link: è utile come riferimento: "Livelli di isolamento"

Esempi di impostazione del livello di isolamento

Esempio di impostazione del livello di isolamento:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SELECT * FROM Products WHERE ProductId=1;
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; --return to the default one
  1. READ UNCOMMITTED - significa che una query nella transazione corrente non può accedere ai dati modificati da un'altra transazione che non è stata ancora eseguita - nessuna lettura sporca! MA, letture non ripetibili e letture fantasma sono possibili, perché i dati possono ancora essere modificati da altre transazioni.

  2. REPEATABLE READ - significa che una query nella transazione corrente non può accedere ai dati modificati da un'altra transazione che non è stata ancora eseguita - nessuna lettura sporca! Nessuna altra transazione può modificare i dati letti dalla transazione corrente fino a quando non viene completata, eliminando le letture NON RIPETIBILI. MA, se un'altra transazione inserisce NEW ROW e la query viene eseguita più di una volta, le righe fantasma possono apparire a partire dalla seconda lettura (se corrisponde all'istruzione where della query).

  3. SNAPSHOT - solo in grado di restituire i dati esistenti all'inizio della query. Garantisce la coerenza dei dati. Impedisce letture sporche, letture non ripetibili e letture fantasma. Per utilizzarlo è richiesta la configurazione del DB:

ALTER DATABASE DBTestName SET ALLOW_SNAPSHOT_ISOLATION ON;GO;
SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
  1. READ COMMITTED - isolamento predefinito del server SQL. Impedisce la lettura dei dati modificati da un'altra transazione fino al commit. Utilizza i controlli di blocco condiviso e il controllo delle versioni delle righe sulle tabelle che impedisce le letture sporche. Dipende dalla configurazione DB READ_COMMITTED_SNAPSHOT - se abilitato - viene utilizzato il controllo delle versioni delle righe. abilitare: utilizzare questo:
ALTER DATABASE DBTestName SET ALLOW_SNAPSHOT_ISOLATION ON;GO;
SET TRANSACTION ISOLATION LEVEL READ COMMITTED; --return to the default one
  1. SERIALIZABLE - utilizza i blocchi fisici acquisiti e trattenuti fino alla fine della transazione, che impedisce letture sporche, letture fantasma, letture non ripetibili. MA, impatta sulle prestazioni del DataBase, perché le transazioni simultanee sono serializzate e vengono eseguite una alla volta.
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE ;


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow