Ich habe die Unterschiede zwischen der SQL Server- READ COMMITTED SNAPSHOT
und der SNAPSHOT
Isolationsstufe untersucht und bin auf die folgende Ressource gestoßen:
Auswählen von zeilenversionsbasierten Isolationsstufen
Für die meisten Anwendungen wird aus den folgenden Gründen empfohlen, die festgeschriebene Isolation mit Zeilenversionsverwaltung anstelle der Snapshot-Isolation zu lesen:
Es benötigt weniger Speicherplatz als die Snapshot-Isolierung.
Die Snapshot-Isolation ist anfällig für Aktualisierungskonflikte, die beim Lesen der festgeschriebenen Isolation mithilfe der Zeilenversionierung nicht zutreffen. Wenn eine Transaktion, die unter Snapshot-Isolation ausgeführt wird, Daten liest, die dann von einer anderen Transaktion geändert werden, führt eine Aktualisierung durch die Snapshot-Transaktion auf dieselben Daten zu einem Aktualisierungskonflikt, und die Transaktion wird beendet und ein Rollback ausgeführt. Dies ist kein Problem bei der durch Lesen festgeschriebenen Isolation mithilfe der Zeilenversionierung.
Ich bin etwas neu in diesen Themen, aber ich kann die beiden Punkte aus dem obigen Link nicht verstehen.
Warum sollte der Tempdb-Raum für diese Modi unterschiedlich sein? Speichert einer mehr granulare Versionierung als der andere?
Warum ist die Snapshot-Isolierung anfälliger für Aktualisierungskonflikte?