数据库6版讲稿第十二章---事务管理讲述.ppt

数据库6版讲稿第十二章---事务管理讲述.ppt

  1. 1、本文档共93页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库6版讲稿第十二章---事务管理讲述

* 基于锁的协议 所有事务都遵守两阶段协议,并发调度是可串性化的。(充分条件,不是必要条件)。 事务不遵守两阶段协议,并发调度是能是可串性化的,也可能不是。 例:T9: H=F+1, T10: F=G+1, T11: F=H+1 初值: H、F、G 都为0 * 基于锁的协议 T9、T10并发, 串性操作 T9→T10 结果: F=1,G=0 , H=1 。 T10→T9结果: F=1,G=0 ,H=2。 T9、T11并发, 串性操作 T9→T11结果: F=2,G=0 , H=1 。 T11→T9结果:F=1, G=0 , H=2。 * 基于锁的协议 T9、T11遵守两阶段协议的并发调度,是 时间 T9 F、G、H T11 并发控制器 1 0,0,0 2 LOCK-S(F) 3 GANT-S(F,T9) 4 Read(F) 0,0,0 5 TEMP1=F 6 LOCK-X(H) 7 GANT-X(H,T9) 8 LOCK-S(H) 9 H=TEMP1+1 等待 10 WRITE(H) 0,0,1 等待 11 COMMIT 0,0,1 等待 12 UNLOCK-X(H) 等待 * 基于锁的协议 13 GANT-S(H,T11) 14 0,0,1 READ(H) 15 TEMP2=H 16 LOCK-X(F) 17 UNLOCK-S(F) 等待 18 GANT-X(F,T11) 19 F=TEMP2+1 20 2,0,1 WRITE(F) 21 2,0,1 COMMIT 22 UNLOCK-X(F) 23 UNLOCK-S(H) * 基于锁的协议 T9、T10不遵守两阶段协议的并发调度,是 时间 T9 F、G、H T10 并发控制器 1 0,0,0 2 LOCK-S(F) 3 GANT-S(F,T9) 4 Read(F) 0,0,0 5 TEMP1=F 6 UNLOCK-S(F) 7 LOCK-S(G) 8 GANT-S(G,T10) 9 0,0,0 READ(G) 10 TEMP2=G 11 UNLOCK-S(G) * 基于锁的协议 12 LOCK-X(F) 13 GANT-X(F,T10) 14 F=TEMP2+1 15 1,0,0 WRITE(F) 16 1,0,0 COMMIT 17 UNLOCK-X(F) 18 LOCK-X(H) 19 GANT-X(H,T9) 20 H=TEMP1+1 21 WRITE(H) 1,0,1 22 COMMIT 1,0,1 23 UNLOCK-X(H) * 基于锁的协议 T9、T11不遵守两阶段协议的并发调度, 不是 时间 T9 F、G、H T11 并发控制器 1 0,0,0 2 LOCK-S(F) 3 GANT-S(F,T9) 4 Read(F) 0,0,0 5 TEMP1=F 6 UNLOCK-S(F) 7 LOCK-S(H) 8 GANT-S(H,T11) 9 0,0,0 READ(H) 10 TEMP2=H 11 UNLOCK-S(H) * 基于锁的协议 12 LOCK-X(F) 13 GANT-X(F,T11) 14 F=TEMP2+1 15 1,0,0 WRITE(F) 16 1,0,0 COMMIT 17 UNLOCK-X(F) 18 LOCK-X(H) 19 GANT-X(H,T9) 20 H=TEMP1+1 21 WRITE(H) 1,0,1 22 COMMIT 1,0,1 23 UNLOCK-X(H) * 三、死锁与活锁 死锁和活锁 两个或两个以上的事务都在等待其中另一个事务解除封锁,它才能继续执行下去,结果任何一个事务都无法继续执行,这种现象称为死锁(dead lock)。 封锁技术可能产生某个事务可能永远处于等待状态,得不到执行的机会,这种现象称为活锁(live lock)。 * 基于锁的协议 解决活锁的一种简单方法是采用“先来者先执行”的控制策略,也就是简单的排队方式。 DBMS中有一个“死锁测试程序”,每隔一段时间检查并发的事务是否发生死锁,发现死锁,只能撤消某个事务,恢复该事务到初始状态。。 两阶段封锁协议可能发生死锁 * 基于锁的协议 例:T9: H=F+1, T10:F=G+1, T11: F=H+1,初值:0,0,0 T9、T11并发, 串性操作 T9→T11结果: F=2,G=0 H=1 。 T11→T9结果:F=1,G=0 H=2。 T9、T11遵守两阶段协议的并发调度 * 基于锁的协议

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档