sql-server – ALLOW_SNAPSHOT_ISOLATION和READ_COMMITTED_SNAPSHO
|
大多数论坛和在线示例总是建议在有人询问快照,行版本控制或类似问题时将ALLOW_SNAPSHOT_ISOLATION和READ_COMMITTED_SNAPSHOT设置为ON. 我猜两个设置中的SNAPSHOT这个词有点令人困惑.我认为,为了使数据库引擎使用行版本控制而不是用于READ_COMMITTED默认行为的锁,数据库READ_COMMITTED_SNAPSHOT设置为ON,而不管ALLOW_SNAPSHOT_ISOLATION设置是什么. 无论READ_COMMITTED_SNAPSHOT设置如何,ALLOW_SNAPSHOT_ISOLATION设置仅设置为ON以允许在启动事务时进行快照隔离(例如,SET TRANSACTION ISOLATION LEVEL SNAPSHOT). 将这两个设置设置为ON的唯一原因是它需要具有READ COMMITTED行版本控制和快照隔离. 我的问题是,我的理解在某种程度上是不正确的吗?并且这两个设置必须始终一起设置为ON(特别是对于READ COMMITTED行版本控制)? 解决方法你的理解是正确的.它确实有点令人困惑.Kim Tripp(SQL Server的程序员之一,也是SQLSkills的一个组成部分)完全按照您在MCM videos on Snapshot Isolation中所述的内容进行操作.在视频中快速前往41:45,以便找到她回答问题的部分. 如果您使用ALLOW_SNAPSHOT_ISOLATION,请确保在代码中使用SET TRANSACTION ISOLATION LEVEL SNAPSHOT,否则您将无法获得任何好处. 如果将SET READ_COMMITTED_SNAPSHOT设置为ON,则无需修改任何代码. MS SQL Server自动为该表应用快照隔离. 我没有测试过如果你在代码中要求不同的隔离级别会发生什么,我怀疑它会覆盖这个选项但是先测试它. A quick look at performance overhead using Snapshot Isolation. Good article on how snapshot isolation can change the expected behavior of your app.它显示了update语句和select语句如何返回完全不同且意外的结果的示例. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- mysql创建内存表的方法
- sql-server – SQL Server 2008 R2安装无效
- 用于区分和ss的SQL查询
- SuperSocket 信息: (SpnRegister) : Error 1355。
- sql-server – 使用LINQ to SQL忽略SQL Server中
- sql-server – Golang MSSQL驱动Windows 7 64位
- SQL Server透明数据加密(TDE)库的备份和还原
- 奇数SQL Server(TSQL)查询在“WHERE”子句中使用
- 如何使用Visual Studio 2010在数据库中生成随机测
- sql-server-2005 – 存储过程的版本更改
