Livelli di isolamento basati sul controllo delle versioni delle righe nel Motore di database

In Microsoft Motore di database di SQL Server è stata introdotta una nuova implementazione di un livello di isolamento della transazione esistente, Read committed, che offre uno snapshot a livello di istruzione tramite il controllo delle versioni delle righe. In Motore di database di SQL Server è stato inoltre introdotto un nuovo livello di isolamento della transazione, ovvero snapshot, che offre uno snapshot a livello di transazione anch'esso tramite il controllo delle versioni delle righe.

È possibile attivare l'isolamento Read committed con il controllo delle versioni delle righe impostando l'opzione di database READ_COMMITTED_SNAPSHOT su ON. L'isolamento dello snapshot viene attivato impostando l'opzione di database ALLOW_SNAPSHOT_ISOLATION su ON. Quando una di tali opzioni è attivata per un database, tramite Motore di database vengono mantenute le versioni di ogni riga modificata. Ogni volta che una riga viene modificata da una transazione, l'immagine della riga prima della modifica viene copiata in una pagina dell'archivio versioni. L'archivio versioni è una raccolta di pagine di dati inclusa nel database tempdb. Se una riga viene modificata da più transazioni, più versioni della riga verranno collegate in una catena delle versioni. Le operazioni di lettura tramite il controllo delle versioni delle righe consentono di recuperare l'ultima versione di ogni riga di cui è stato eseguito il commit all'avvio della transazione o dell'istruzione.

Le applicazioni scritte per SQL Server 2000 o quelle nuove per SQL Server implementano l'isolamento Read committed tramite il controllo delle versioni delle righe specificando il livello di isolamento della transazione Read committed quando l'opzione di database READ_COMMITTED_SNAPSHOT è impostata su ON. In tutte le operazioni di lettura vengono visualizzate le versioni delle righe di cui è stato eseguito il commit all'avvio dell'istruzione. In questo modo viene fornito uno snapshot dei dati a livello di istruzione.

Le applicazioni scritte per SQL Server implementano l'isolamento dello snapshot specificando il livello di isolamento della transazione snapshot quando l'opzione di database ALLOW_SNAPSHOT_ISOLATION è impostata su ON. In tutte le operazioni di lettura in una transazione snapshot vengono visualizzate le versioni delle righe di cui è stato eseguito il commit all'avvio della transazione. In questo modo viene fornito uno snapshot dei dati a livello di transazione.

Per le transazioni in cui viene utilizzato un livello di isolamento basato sul controllo delle versioni delle righe, le operazioni di lettura non richiedono blocchi condivisi sui dati. In questo modo, i lettori che utilizzano il controllo delle versioni delle righe non bloccano altri lettori o writer che accedono agli stessi dati. Analogamente, i writer non bloccano i lettori. I writer, tuttavia, possono bloccarsi reciprocamente anche durante l'esecuzione in livelli di isolamento basati sul controllo delle versioni delle righe. Gli stessi dati non possono essere modificati da due operazioni di scrittura simultanee.

Nella tabella seguente vengono descritti gli argomenti in cui sono disponibili ulteriori informazioni sui livelli di isolamento basati sul controllo delle versioni delle righe.

Argomento

Descrizione

Informazioni sui livelli di isolamento basati sul controllo delle versioni delle righe

Descrive i concetti relativi al controllo delle versioni delle righe.

Scelta di livelli di isolamento basati sul controllo delle versioni delle righe

Descrive i vantaggi e i costi del controllo delle versioni delle righe, offrendo consigli sugli scenari più adatti.

Abilitazione dei livelli di isolamento basati sul controllo delle versioni delle righe

Descrive le opzioni che consentono di abilitare il controllo delle versioni delle righe in un database.

Utilizzo di livelli di isolamento basati sul controllo delle versioni delle righe

Descrive i limiti dei livelli di isolamento basati sul controllo delle versioni delle righe.

Utilizzo delle risorse di controllo delle versioni delle righe

Descrive l'impatto sul sistema del controllo delle versioni delle righe, trattando le viste a gestione dinamica e i contatori delle prestazioni che restituiscono informazioni sullo stato del controllo delle versioni delle righe in database e transazioni.