我应该跑吗?
ALTER DATABASE DbName SET ALLOW_SNAPSHOT_ISOLATION OFF
如果不临时使用快照事务(TX)隔离(iso)?
换句话说,
在SQL Server中启用(但暂时不使用)它的成本是多少?
--更新:
在数据库上启用快照TX iso级别不会将读取提交的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开始的脚本,但启用了快照(但未打开),但未启用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之后
您能为我提供一些脚本,说明启用快照tx iso level by (1)但不打开(2)会在tempdb中生成任何版本和/或增加每行14字节的数据大小吗?
我真的不明白,如果版本控制是由(1)启用的,但没有使用(不是通过(2)设置),那么版本控制有什么意义?
1
在SQL Server中管理TempDB : TempDB基础知识(版本存储:简单示例)
发布于 2010-11-06 14:07:34
默认情况下,您关闭了快照隔离,如果您打开它,SQL将为运行事务维护数据快照。示例:在连接1上,您正在运行big select。在连接2上,更新将要由第一个select返回的一些记录。
在snapshot isolation ON模式下,SQL将创建受update影响的数据的临时副本,因此SELECT将返回原始数据。
任何额外的数据操作都会影响性能。这就是默认情况下此设置处于关闭状态的原因。
https://stackoverflow.com/questions/4111660
复制相似问题