首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >设置ALLOW_SNAPSHOT_ISOLATION ON的含义是什么?

设置ALLOW_SNAPSHOT_ISOLATION ON的含义是什么?
EN

Stack Overflow用户
提问于 2010-11-06 10:55:22
回答 1查看 16.3K关注 0票数 16

我应该跑吗?

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基础知识(版本存储:简单示例)

Link

EN

回答 1

Stack Overflow用户

发布于 2010-11-06 14:07:34

默认情况下,您关闭了快照隔离,如果您打开它,SQL将为运行事务维护数据快照。示例:在连接1上,您正在运行big select。在连接2上,更新将要由第一个select返回的一些记录。

在snapshot isolation ON模式下,SQL将创建受update影响的数据的临时副本,因此SELECT将返回原始数据。

任何额外的数据操作都会影响性能。这就是默认情况下此设置处于关闭状态的原因。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4111660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档