Должен ли я запускать
ALTER DATABASE DbName SET ALLOW_SNAPSHOT_ISOLATION OFF
если изоляция транзакции моментальной копии (TX) (iso) временно не используется?
Другими словами,
- почему он должен быть включен, в первую очередь?
- Почему он не включен по умолчанию?
Какова стоимость включения (но временно не использованного) в SQL Server?
- Update:
включение моментального снимка TX iso level в базе данных не изменяется. 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
Можете ли вы предоставить мне сценарии, иллюстрирующие, что включен SNAPSHOT tx iso level (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