Должен ли я запускать
ALTER DATABASE DbName SET ALLOW_SNAPSHOT_ISOLATION OFF
, если изоляция транзакции моментального снимка (TX) (iso) временно не используется?
Другими словами,
- почему это должно бытьвключен, в первую очередь?
- Почему он не включен по умолчанию?
Какова стоимость включения (но временно не использования) в SQL Server?
- Обновление:
включение моментального снимка ISO-уровня TX для базы данных не меняет READ COMMITTED tx ISO на значение по умолчанию.
Вы можете проверить это, выполнив:
use someDbName;
--( 1 )
alter database someDbName set allow_snapshot_isolation ON;
dbcc useroptions;
последняя строка показывает, что уровень tx iso текущего сеанса равен (чтение зафиксировано).
Таким образом, включение снимка tx iso level без его изменения не использует его и т. Д. Для его использования необходимо выполнить команду
--( 2 )
SET TRANSACTION ISOLATION LEVEL SNAPSHOT
Update2:
Я повторяю сценарии из [1], но с включенным SNAPSHOT (но не включенным), но без включения READ_COMMITTED_SNAPSHOT
--with enabling allow_snapshot_isolation
alter database snapshottest set allow_snapshot_isolation ON
-- but without enabling read_committed_snapshot
--alter database snapshottest set read_committed_snapshot ON
-- OR with OFF
alter database snapshottest set read_committed_snapshot OFF
go
Нет результатов / строк от выполнения
select * from sys.dm_tran_version_store
послевыполнение INSERT, DELETE или UPDATE
Можете ли вы предоставить мне сценарии, иллюстрирующие, что включенный уровень iso уровня SNAPSHOT tx с помощью (1), но не включенный с помощью (2), создает любые версии в базе данных tempdb и / или увеличивает размер данныхс 14 байтами на строку?
Неужели я не понимаю, какой смысл в управлении версиями, если оно включено (1), но не используется (не установлено (2))?
[1]
Управление TempDB в SQL Server: основы TempDB (хранилище версий: простой пример)
http://blogs.msdn.com/b/sqlserverstorageengine/archive/2008/12/31/managing-tempdb-in-sql-server-tempdb-basics-version-store-simple-example.aspx