网站大量收购闲置独家精品文档,联系QQ:2885784924

ppt12.pptVIP

  1. 1、本文档共20页,可阅读全部内容。
  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文档。上传文档
查看更多
ppt12,ppt模板,ppt下载,ppt素材,ppt教程,ppt官方下载,ppt背景图片,ppt制作,ppt制作软件,ppt模板下载

* * 第 13 讲 数据库的并发控制 数据库技术 问题的提出:数据库是一个共享资源,应该允许多个用户程序并行地存取数据,当对数据库进行并行操作时,有可能出现数据不一致的情况。 并行操作:在单处理机系统中,事务的并行执行实际上是这些并行事务的操作轮流交叉进行。 1、概念 考虑飞机订票系统。设有两个订票点,机票余票A=15。 取A=15 修改A=A-1 写回数据库A=14 取A=15 修改A=A-1 写回数据库A=14 T 前面示例可表示为: 事务T1 取A=15 修改A=A-1 写回数据库A=14 事务T2 取A=15 修改A=A-1 写回数据库A=14 T 不加控制的并发存取会产生以下几种错误。 1)丢失修改(lost updates) 事务T1 取A=15 修改A=A-1 写回数据库A=14 事务T2 取A=15 修改A=A-1 写回数据库A=14 T 解决办法是在T1完成之前,禁止T2读A。 2)读-写依赖(Read-Write Dependency) 设A代表客户存款余额,B代表已取款数,则A+B应为开户时存款总数(A=1000,B=0)。 现在状态为:A=600,B=400。 事务T1 读A=600 读B=500 检查一致状态A+B=1100 事务T2 读A=600 修改A=600-100 写回数据库A=500 读B=400 修改B=400+100 写回数据库B=500 T 3)脏读(Dirty Read) 与上例相同,采用另外一种执行顺序。 事务T1 读A=500 读B=400 检查一致状态A+B=900 事务T2 读A=600 修改A=600-100 写回数据库A=500 读B=400 修改B=400+100 写回数据库B=500 T 4)未释放修改造成连锁退出 事务T1 读A=100 修改A=100+100 写回数据库A=200 发现错误,恢复A为100 事务T2 读A=200 读B=10 修改B=A+B 写回数据库B=210 连锁恢复B T 2、并发控制技术原理 并发控制的主要技术是封锁(Locking) 封锁就是事务T在对某个数据对象(如表、记录)进行操作之前,先向系统请求加锁。加锁后,事务T就对该数据对象有了控制权,在事务T 释放它的锁之前,其他事务不能更新此数据。 封锁的类型:排它锁(Exclusive Locks 简称X锁,又称 写锁) 共享锁(Share Locks 简称S锁,又称读锁) 若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他事务不能再对A加锁。 若事务T对数据对象A加上S锁,则只允许T读取A,但不能修改A,其他事务只能再对A再加S锁,而不能加X锁。 在运用X锁和S锁时,必须遵守一定的规则 ( 称为封锁协议 ) 。 一级封锁协议:事务T在修改数据R之前,必须先对其加X锁,直到事务结束才释放。 一级封锁协议可以防止丢失修改。 二级封锁协议:一级封锁协议+事务T在读取数据R之前,必须先对其加S锁,读完后即可释放S锁。 二级封锁协议可以进一步防止读“脏”数据。 三级封锁协议:一级封锁协议+事务T在读取数据R之前,必须先对其加S锁,直到事务结束才释放。 三级封锁协议可以更进一步防止读-写依赖。 并发控制 1级封锁协议 BEGIN 长X锁 EOT Lock-X(A); read (A); A := A - 1 write(A); commit; Unlock (A) Lock-X(A) wait read (A); A := A ? 1; write(A); commit; Unlock (A) T1 T2 2级封锁协议 BEGIN 短S锁 长X锁 EOT Lock-S(A) ; Lock-S(B) ; wait read (A) ; read (B) ; Lock-X(A) Lock-X(B) read(A); A := A ? 100; write(A); read (B) B :=B + 100 ; write (B) commit; Unlock (A) Unlock (B) T1 T2 并发控制 3、死锁的预防和解除 P270

您可能关注的文档

文档评论(0)

ajgoaw + 关注
文档贡献者

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

1亿VIP精品文档

相关文档