Sql Server2005提供了两种基于快照的隔离类型,他们都是利用行版本控制来维护快照的:
1、已提交读快照隔离(RCSI),通过修改数据库的一个选项来启用
alter database AdventureWorks set READ_COMMITTED_SNAPSHOT on

2、快照隔离(SI),必须在两个地方开启
A、启用数据库的ALLOW_ISOLATION_SNAPSHOT选项
alter database AdventureWorks set ALLOW_SNAPSHOT_ISOLATION on
B、通过set transaction isolation level 命令为每个想要使用SI的连接设置隔离级别

set transaction isolation level snapshot

观察数据库的状态

目录视图sys.databases包含了几个报告数据库快照隔离状态的字段.
snapshot_isolation_state字段的可能值是0到4,表示四种可能的SI状态,而snapshot_isolation_state_desc字段对每种状态作了清晰的说明:
off:数据库关闭了快照隔离状态
in_transition_to_on:数据库正处于开启SI的中间状态
on:SI被开启
in_transition_to_off:数据库正处于关闭SI的中间状态而不能启动新的快照事务

数据库选项read_committed_snapshot可能的状态值
0:关闭
1:开启

并发模型的选择

悲观并发控制时Sql Server2005中的默认设置,也是所有早期版本的唯一选择。事务的行为是由加锁来保证的,而付出的代价是产生较多的阻塞。在访问同一数据资源时,读者和写者之间会互相阻塞。由于Sql Server最初是为使用悲观并发而设计的,用户应该在证明乐观并发确实对应用程序更有用的前提下才考虑使用

在大多数情况下,基于下列原因RCSI比SI更受欢迎:
1、RCSI比SI占用更少的tempdb空间
2、RCSI支持分布式事务,而SI不支持
3、RCSI不会产生更新冲突
4、RCSI无需再应用程序端作任何修改。唯一要更改的只是一个数据库选项

可以考虑在下列情况中使用SI:
1、不太可能由于更新冲突而导致事务必须回滚得情况
2、需要基于运行时间长、能保证时间点一致性的多语句来生成报表的情况

乐观并发控制的优缺点:
优点:
1、select 操作无需获取共享锁,因此读者和写者之间不会互相阻塞
2、所有的select会得到一个始终如一的数据快照
3、与悲观并发相比,锁的需求总量大大减少了,因而将节约更多系统开销
4、Sql Server会执行较少的锁升级
5、发生死锁的可能性较小

缺点:
1、当需要扫描一个很长的版本链时,select语句的性能会有所下降
2、行版本控制需要tempdb数据库中的额外数据
3、只要数据库启用了基于快照隔离级别的某一种时,更新和删除操作都必须产生行版本
4、需要为每个受到影响的行增加大小为14个字节的行版本控制信息
5、更新操作的性能可能会因为维护行版本而变差
6、使用SI模式的更新操作可能会因为冲突检测而被回滚
7、必须小心地控制tempdb的空间

转载于:https://www.cnblogs.com/Spring/archive/2008/08/21/1272685.html

Sql Server 2005中的快照隔离相关推荐

  1. SQL Server 2005 中提供的隔离级别

    SQL Server 2005 中提供的隔离级别 隔离级别 脏读(可能的情况) 非可重复读取(可能的情况) Phantom(可能的情况) 并发控制 读取未提交 是 是 是 (无) 读取已提交 否 是 ...

  2. SQL Server 2005中专用管理员连接 (DAC) 使用技巧修改系统表的方法

    Server 2005 专用管理员连接 (DAC) 使用技巧 1 什么是专用管理员连接? SQL Server 2005 为管理员提供了一种特殊的诊断连接,以供在无法与服务器建立标准连接时使用. 2 ...

  3. SQL Server 2005中的分析服务功能[转]

    XXXX(不知道为什么CnBlogs上的人这么抵制XXXX,呵呵--)上推出了"体验SQL Server 2005"活动,当然啦,一些关于SQL Server 2005的文章被翻译 ...

  4. SQL Server 2005 中的商务智能和数据仓库

    微软发布了SQL Server 2005,对于微软与BI来说这是一个非常重要的版本,它完善了微软在BI方面的产品线.SQL Server 2005以及 Visual Studio .net2005的整 ...

  5. SQL Server 2005中解决死锁问题

    SQL Server 2005中解决死锁问题 数据库操作的死锁是不可避免的,本文并不打算讨论死锁如何产生,重点在于解决死锁,通过SQL Server 2005, 现在似乎有了一种新的解决办法. 将下面 ...

  6. Sql Server 2005 中的row_number() 分页技术

    原文发布时间为:2009-05-08 -- 来源于本人的百度文章 [由搬家工具导入] 在Sql Server 2005中,我们可以利用新增函数row_number()来更高效的实现分页存储 CREAT ...

  7. sql server 2005 中的同义词

    在SQL SERVER 2005中,终于出现了同义词了,大大方便了使用. 同义词是用来实现下列用途的数据库对象: 为本地或远程服务器上的另一个数据库对象(称为"基对象")提供备选名 ...

  8. sql server 2005中新增加的try catch学习

    sql server 2005中新增加的try catch,可以很容易捕捉异常了,今天大概学习看了下,归纳下要点如下 需要什么来搜一搜吧so.bitsCN.com 基本用法BEGIN TRY { sq ...

  9. 如何在SQL Server 2005中使用作业实现备份和特定删除

    步骤如下:   1.需要启动服务Sql Server Agent(sql server 代理)   2.新建作业,名称为backupDatabase   3.选择步骤,点击"新建" ...

最新文章

  1. 教程:从FLASH过渡到SILVERLIGHT.(实例+源码)
  2. Vue creatElement
  3. 使用shouldComponentUpdate进行性能优化
  4. VideoLAN,VLC和FFmpeg社区联合开发AV1解码器
  5. C#多线程之旅(2)——详解线程的开始和创建
  6. 个人博客开发系列:前台博客页面开发部署完成
  7. hdu-5596 GTW likes gt(模拟+优先队列)
  8. java什么是工作空间_[Java教程]Java开发工具(Eclipse工作空间的基本配置)
  9. 网络安全从业者“行话”
  10. 微信支付(小程序)-商户号配置与小程序配置
  11. Spring5开发新功能
  12. 解锁计算机桌面,电脑锁屏按什么键解锁
  13. c++算法解决力扣跳步问题
  14. c语言程序转python_c语言转python
  15. 今天一篇文章告诉你Python 自动化测试 必会模块 Unittest
  16. WPF入门教程(一)---基础
  17. 残差连接(skip connect)/(residual connections)
  18. bowtie:短序列比对的新工具
  19. Cadence学习记录(三)芯片封装设计
  20. (含固件工具)教你如何将IPHONE4S降级到6.1.3

热门文章

  1. linux系统安装jdk及配置环境变量
  2. Jeecg-Boot前后端分离,针对敏感数据,加密传递方案
  3. 019.MFC_两种对话框
  4. ruby之添加当前文件路径到$LOAD_PATH
  5. 当我们在谈论技术时,技术的本质和价值究竟是什么?
  6. 静态工厂方法之服务提供者框架
  7. ios 使用UINavagationController时,push,pop方法执行的一些方法
  8. Fedora 18 下安装 mplayer
  9. Android实例RSS客户端开发(2)--解析XML文件
  10. XPO 学习资料(转摘)