我应该跑吗
ALTER DATABASE DbName SET ALLOW_SNAPSHOT_ISOLATION OFF
如果暂时不使用快照事务(TX)隔离(iso)?
换句话说,
在 SQL Server 中启用(但暂时不使用)它的成本是多少?
- 更新:
在数据库上启用快照 TX iso 级别不会将 READ COMMITTED tx iso 更改为默认值。
您可以通过运行来检查它:
use someDbName;
--( 1 )
alter database someDbName set allow_snapshot_isolation ON;
dbcc useroptions;
最后一行显示当前会话的 tx iso 级别为(已提交读取)。
因此,启用快照 tx iso 级别而不更改它不会使用它,等等
为了使用它,应该发出
--( 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 后
您能否向我提供脚本,说明通过 ( 1 ) 启用 SNAPSHOT tx iso 级别但未通过 ( 2 ) 开启会在 tempdb 中生成任何版本和/或增加每行 14 字节的数据大小?
我真的不明白如果版本控制由(1)启用但未使用(未由(2)设置),那么版本控制的意义是什么?
[1]
在 SQL Server 中管理 TempDB:TempDB 基础知识(版本存储:简单示例)
Link https://learn.microsoft.com/en-us/archive/blogs/sqlserverstorageengine/managing-tempdb-in-sql-server-tempdb-basics-version-store-simple-example