Individuazione del livello di isolamento predefinito in SQL Server 2017 e Azure SQL DB


9

Sto leggendo un libro relativo a transazioni e concorrenza. In un paragrafo si menziona che:

  • Nell'istanza locale di SQL Server il livello di isolamento predefinito è Read-Committed in base al blocco

E la frase successiva è:

  • L'impostazione predefinita nel database SQL è Read - commit snapshot basato sul controllo delle versioni delle righe

La mia domanda è: qual è la differenza tra "Istanza di SQL Server locale" e "Database SQL" in queste due frasi?

Qual è il livello di isolamento predefinito e come posso trovarlo? Esiste una query speciale per scoprire il livello di isolamento predefinito?

Risposte:


13

Si riferisce al database SQL di Azure che utilizza RCSI per impostazione predefinita .

Livello di isolamento SQL

L'impostazione estesa del database per impostazione predefinita del database è abilitare l'isolamento dello snapshot di commit (RCSI) di lettura avendo entrambe le opzioni di database READ_COMMITTED_SNAPSHOT e ALLOW_SNAPSHOT_ISOLATION impostate su ON, per ulteriori informazioni sui livelli di isolamento qui . Non è possibile modificare il livello di isolamento predefinito del database. Tuttavia, è possibile controllare esplicitamente il livello di isolamento su una connessione.

In SQL Server locale, il livello di isolamento predefinito è Lettura confermata.

Trovare il livello di isolamento "predefinito" è un po 'un inseguimento d'oca. Dipenderà dal database da cui viene avviata una query e se nella query sono presenti suggerimenti per sovrascrivere un'impostazione a livello di database.

Detto questo, è possibile sys.databaseseseguire una query per scoprire se RCSI o SI è abilitato.

SELECT d.name, 
       d.is_read_committed_snapshot_on, 
       d.snapshot_isolation_state
FROM sys.databases AS d;

Si noti che READ_COMMITTED_SNAPSHOTtecnicamente non è un livello di isolamento. Piuttosto, è un'opzione di database che controlla l'implementazione in modo che venga utilizzato il controllo delle versioni delle righe anziché il blocco per fornire coerenza di lettura per le sessioni che utilizzano il READ_COMMITTEDlivello di isolamento.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.