Я исследовал различия между SQL Server READ COMMITTED SNAPSHOT
и SNAPSHOT
уровнями изоляции и наткнулся на следующий ресурс:
Выбор уровней изоляции на основе версий строк
Для большинства приложений рекомендуется использовать фиксацию чтения с использованием контроля версий строк вместо изоляции моментальных снимков по следующим причинам:
Он потребляет меньше места в базе данных tempdb, чем изоляция моментальных снимков.
Изоляция моментальных снимков уязвима к конфликтам обновлений, которые не применимы к изолированной фиксации чтения с использованием управления версиями строк. Когда транзакция, выполняемая с изоляцией моментального снимка, считывает данные, которые затем изменяются другой транзакцией, обновление транзакцией моментального снимка до тех же данных вызывает конфликт обновления, и транзакция завершается и откатывается. Это не проблема с фиксацией на чтение, использующей управление версиями строк.
Я несколько новичок в этих темах, но я не могу понять два пункта из ссылки выше.
Почему пространство tempdb будет другим для этих режимов? Один магазин хранит более гранулированные версии, чем другой?
Почему изоляция моментальных снимков более уязвима для конфликтов обновлений?