Stavo studiando le differenze tra i livelli di SQL Server READ COMMITTED SNAPSHOT
e di SNAPSHOT
isolamento e mi sono imbattuto nella seguente risorsa:
Scelta dei livelli di isolamento basati su Versioning di riga
Per la maggior parte delle applicazioni, si consiglia di leggere l'isolamento con commit utilizzando il controllo delle versioni delle righe rispetto all'isolamento dello snapshot per i seguenti motivi:
Consuma meno spazio tempdb rispetto all'isolamento dello snapshot.
L'isolamento dello snapshot è vulnerabile agli aggiornamenti dei conflitti che non sono applicabili alla lettura dell'isolamento commesso mediante il controllo delle versioni delle righe. Quando una transazione in esecuzione con l'isolamento dello snapshot legge i dati che vengono poi modificati da un'altra transazione, un aggiornamento della transazione dello snapshot agli stessi dati provoca un conflitto di aggiornamento e la transazione termina e torna indietro. Questo non è un problema con l'isolamento impegnato nella lettura mediante il controllo delle versioni delle righe.
Sono un po 'nuovo su questi argomenti, ma non riesco a capire i due punti elenco dal link sopra.
Perché lo spazio tempdb sarebbe diverso per queste modalità? Uno memorizza un versioning più granulare rispetto all'altro?
Perché l'isolamento dello snapshot è più vulnerabile agli aggiornamenti dei conflitti?