Badałem różnice między poziomami SQL Server READ COMMITTED SNAPSHOT
a SNAPSHOT
poziomami izolacji i natknąłem się na następujący zasób:
Wybieranie poziomów izolacji opartych na wersjach wierszy
W przypadku większości aplikacji zaleca się odczytanie zatwierdzonej izolacji przy użyciu wersji wiersza zamiast izolacji migawki z następujących powodów:
Zajmuje mniej miejsca w tempdb niż izolacja migawkowa.
Izolacja migawki jest podatna na konflikty aktualizacji, które nie mają zastosowania do odczytu zatwierdzonej izolacji przy użyciu wersjonowania wierszy. Gdy transakcja uruchomiona w izolacji migawkowej odczytuje dane, które są następnie modyfikowane przez inną transakcję, aktualizacja przez migawkę tych samych danych powoduje konflikt aktualizacji, a transakcja kończy się i wycofuje. Nie jest to problem z odczytaniem zatwierdzonej izolacji przy użyciu wersjonowania wierszy.
Jestem nieco nowy w tych tematach, ale wydaje mi się, że nie rozumiem dwóch punktów z powyższego linku.
Dlaczego przestrzeń tempdb miałaby być inna dla tych trybów? Czy jedno przechowuje bardziej szczegółowe wersje niż drugie?
Dlaczego izolacja migawek jest bardziej podatna na konflikty aktualizacji?