Eu estava pesquisando as diferenças entre os níveis do SQL Server READ COMMITTED SNAPSHOT
e de SNAPSHOT
isolamento e me deparei com o seguinte recurso:
Escolhendo níveis de isolamento baseados em controle de versão de linha
Para a maioria dos aplicativos, recomenda-se o isolamento de leitura confirmada usando controle de versão de linha em vez do isolamento de captura instantânea pelos seguintes motivos:
Consome menos espaço tempdb do que o isolamento da captura instantânea.
O isolamento de captura instantânea é vulnerável a conflitos de atualização que não são aplicáveis à leitura de isolamento confirmado usando controle de versão de linha. Quando uma transação em execução sob isolamento de captura instantânea lê dados que são modificados por outra transação, uma atualização da transação de captura instantânea nos mesmos dados causa um conflito de atualização e a transação é encerrada e revertida. Esse não é um problema com o isolamento confirmado pela leitura usando o controle de versão de linha.
Sou um pouco novo nesses tópicos, mas não consigo entender os dois pontos do link acima.
Por que o espaço tempdb seria diferente para esses modos? Um armazena versões mais granulares que o outro?
Por que o isolamento de instantâneo é mais vulnerável a conflitos de atualização?
fonte
Mais uma diferença entre o instantâneo e o instantâneo confirmado de leitura é o seguinte.
Na primeira sessão
CONFIGURAR O INSTANTÂNEO DO NÍVEL DE ISOLAMENTO DE TRAN COMEÇAR TRAN SELECT * FROM TB1 ..... .....
Na segunda sessão
Atualizar TB1 SET NAME = NAME + 'test' Onde id = 1
Na primeira sessão
SELECT * FROM TB1 - ISTO retornará o nome do valor para ID = 1, não nome + 'teste' COMMIT TRAN
No instantâneo confirmado de leitura, a primeira seleção na sessão 1 retornará o nome para id = 1 e a segunda seleção retornará o nome + 'test'.
Portanto, no isolamento de instantâneo, o SQL SERVER faz um instantâneo no início da transação e lê esse instantâneo durante toda a transação.
No instantâneo confirmado de leitura, o instantâneo é obtido para todas as instruções SELECT durante a transação.
fonte