事务与锁.pptVIP

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

第十三章 事务与锁 第十三章 事务与锁 在理解事务的基础上掌握如何使用事务以及在什么情况下需要使用事务 了解锁的相关问题 一、事务 1、事务的作用 事务是并发控制的基本单位,它反映了现实世界中需要一个完整的单位提交的一项工作。将逻辑相关的一组操作捆绑在一起,以便服务器保持数据的完整性。 注:要么全部处理;要么一行也不处理,恢复操作前状态。这就是事务处理的作用。 2、事务处理控制语句 SQL Server中可通过以下三个语句完成事务控制: (1)开始一个事务:begin tran[saction] 事务名 (2)提交一个事务:commit [tran[saction]] 事务 (3)回滚一个事务:rollback [tran[saction]] 事务名 在数据库应用程序设计中,事务控制语句的一般用法是: 第一步:Begin tran 事务名; 第二步:对数据库进行增、删、改等操作 第三步:提交事务或回滚。 相关说明 1、事务属性 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability) 2、回滚事务的说明 执行了COMMIT TRANSCATION语句后不能再回滚事务 事务在执行过程中出现的任何错误,SQL Server实例将回滚事务 系统出现死锁时会自动回滚事务 由于其他原因(客户端网络连接中断、应用程序中止等)引起客户端和SQL Server实例之间通信的中断,SQL Server实例将回滚事务。 在触发器中发出ROLLBACK TRANSCATION命令,将回滚对当前事务中所做的数据修改,包括触发器所做的修改 对于嵌套事务,ROLLBACK TRANSCATION语句将所有内层事务回滚到最远的BEGIN TRANSACTION语句,“事务名”也只能是来自最远的BEGIN TRANSACTION语句的名称。 二、锁 概念: 锁作为一种安全机制,用于控制多个用户的并发操作,防止用户读取正在由其他用户更改的数据或者多个用户同时修改同一数据,确保事务的完整性和数据的一致性。 并发问题 丢失或覆盖更新 未确认的相关性(脏读) 不一致的分析(不能重复读) 幻象读 SQL Server 2000中锁定介绍 为了减少锁的成本,应该根据事务所要执行的任务,合理选择锁的粒度,将资源锁定在适合任务的级别范围内。 不同粒度的锁可以锁定的资源 锁的模式 SQL Server使用不同的锁模式锁定资源,这些锁模式确定了并发事务访问资源的方式。常用的锁模式有: (1)共享(Shared)锁:用于只读取数据的操作。 (2)更新(Update)锁:用于可更新的资源中,防止多个会话在读取、锁定及随后可能进行的资源更新时发生常见形式的死锁。 (3)独占(Exclusive)锁:用于数据修改操作 死锁 锁机制的引入能解决并发用户的数据一致性问题,但因此可能会引起进程间的死锁问题。引起死锁的主要原因是,两个进程已各自锁隹一个页,但又要求访问被对方锁住的页。更一般的情况是,一个事务独占了其他事务正在申请的资源,且若干个这样的事务形成一个等待圈。例如用户A和用户B按照下表的时间顺序执行操作,在T3时间点将会产生死锁。 死锁的排除 SQLServer能自动发现并解除死锁。 当发现死锁时,它会选择其进程累计的CPU时间最少者所对应的用户作为“牺牲者”(令其夭折),以让其他进程能继续执行。此时SQL Server发送错误号1205(即@@error=1205)给牺牲者。 在并发操作中,为了避免死锁,建议采用以下措施: ⑴最大限度地减少保持事务打开的时间长度; ⑵按同一顺序访问对象; ⑶尽量避免事务中的用户交互; ⑷保持事务简短并在一个批处理中。 * * 数据库锁定,锁定整个数据库 数据库 表锁定,锁定整个数据表,包括所有数据和索引在内。 数据表 区域锁定,锁定8个连续的数据页面或索引页面 区域 页面锁定,锁定8KB的数据页或索引页 页 键值锁定,锁定具有索引的行数据。 键 行锁定,锁定表中的一行数据。 行 说 明 资源 说明:HOLDLOCK选项表示将共享锁保留到事务完成,而不是在相应的表、行或数据页不再需要时就立即释放锁。 修改TAB1表的数据 查询TAB2表的信息 (使用HOLDLOCK选项) B 修改TAB2表的数据 查询TAB1表的信息 (使用HOLDLOCK选项) A T3 T2 T1 * * *

文档评论(0)

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

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

1亿VIP精品文档

相关文档