SQLServer事务和并发控制.pptVIP

  1. 1、本文档共73页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQLServer事务和并发控制

2级封锁协议 1级封锁协议+事务T在读取数据R前必须先加S锁,读完后即可释放S锁 2级封锁协议可以防止丢失修改和读“脏”数据。 在2级封锁协议中,由于读完数据后即可释放S锁,所以它不能保证可重复读。 2级封锁协议 T1 T2 ① Xlock C 读C= 100 C←C*2 写回C=200 ② ? ③ ROLLBACK (C恢复为100) Unlock C ④ ? ⑤ ? ? ? ? ? ? Slock C 等待 等待 等待 等待 获得Slock C 读C=100 Commit C Unlock C 不读“脏”数据 3级封锁协议 1级封锁协议 + 事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放 3级封锁协议可防止丢失修改、读脏数据和不可重复读。 容易造成比较多的死锁 3级封锁协议 T1 T2 ①??Slock A 读A=50 Slock B 读B=100 求和=150 ② ? ? ③ 读A=50 读B=100 求和=150 Commit Unlock A Unlock B ④ ? ? ⑤ ? ? ? ? ? Xlock B 等待 等待 等待 等待 等待 等待 等待 等待 获得Xlock B 读B=100 B←B*2 写回B=200 Commit Unlock B 可重复读 封锁协议小结 8.6.3 事务隔离 为了避免产生并发访问问题,SQL Server使用不同类型的锁对资源进行锁定,从而限制在一个事务读取数据期间其他事务锁执行的操作类型,即对事务进行隔离。 不同的并发访问问题可以通过设置不同的事务隔离级别加以解决。事务的隔离级别控制一个事务与其他事务的隔离程度,它决定该事务在读取数据时对资源所使用的锁类型。 1)事务隔离级别 未提交读:这是4种隔离级别中限制最低的级别,它仅能保证SQL Server不读取物理损坏的数据。在这种隔离级别下,不发出共享锁,也不接受排它锁,事务可以对数据执行未提交读或脏读;在事务结束前可以更改数据集内的数值,行也可以出现在数据集中或从数据集消失。 提交读:它要求在读取数据时控制共享锁以避免发生脏读,但数据可在事务结束前更改,这可能产生不能重复读或幻影读问题。 可重复读:锁定查询中使用的所有数据以防止其他用户更新,但是其他用户可以将新的幻影行插入到数据集中,新插入的幻影行将出现在当前事物的后续读取结果集中。可重复读能够避免产生脏读和非重复读问题,但仍可能导致幻影读问题。 可串行读:这是事务隔离的最高级别,它使事务之间完全隔离,所以将导致并发级别较低。在这种隔离级别下,SQL Server在数据集上放置一个范围锁,以防止其他用户在事务完成之前更新数据集或向数据集内插入数据行,从而避免出现脏读、非重复读或幻影读等并发问题。 2)事务隔离级别对不同类型的行为 隔离级别 脏数据 丢失修改 不可重读 幻影 未提交读 是 是 是 是 提交读 否 是 是 是 可重复读 否 否 否 是 可串行读 否 否 否 否 3)设置事务隔离级别 调用T-SQL中的SET TRANSACTION INOLATION LEVEL语句可以调整事务的隔离级别,以控制由该连接所发出的所有SELECT语句的默认事务锁定行为。该语句的语法格式为: SET TRANSACTION ISOLATION LEVEL{ READ UNCOMMITTED |READ COMMITTED |REPEATABLE READ |SERIALIZABLE } 例如:将事务隔离级别设置为REPEATABLE READ SET TRANSACTION ISOLATION LEVEL REPEATABLE READ 注意:一旦设定,系统就会按这种隔

文档评论(0)

118books + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档