08-第八节 并发控制-new.pptVIP

  1. 1、本文档共57页,可阅读全部内容。
  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文档。上传文档
查看更多
第八章: 并发控制 并发控制概述 封锁(Locking) 封锁协议 活锁和死锁 并发调度的可串行性 两段封锁协议 并发与并行 并发与并行 为何要并发执行 提高系统的吞吐量 吞吐量 单位时间内系统执行的事务数 CPU处理和磁盘I/O可以同时进行,利用二者的并行性,可以并发地执行多个事务。提高CPU和磁盘的利用率。 为何要并发执行 减少事务的平均响应时间 多用户数据库系统 事务是DBMS的执行单位 事务的平均响应时间 一个事务从开始到完成所需要的平均时间 事务有长短,如果串行执行,短事务可能要花费很长的时间等待它前面的长事务的漫长执行。 并发执行可能产生的问题 多用户操作数据库带来的问题--并发问题 问题1 在飞机订票系统中,假定有两个售票点甲和乙可以各自售票, 每一航班的剩余票数存放在数据库中, 其结果是丢失修改 丢失修改:两个事务T1和T2读入同一数据并修改, T2提交的结果破坏了T1提交的结果,T1的修改丢失 并发执行可能产生的问题 并发执行可能产生的问题 问题2: 两个用户分别对数据库中数据进行操作,结果出现不可重复读现象 不可重复读 事务T1读取某一数据后,事务T2读取并修改了同一数据,使T1无法再现前一次的读取结果; T2的插入和删除?幻影现象 并发执行可能产生的问题 问题3 两个用户分别对数据库中数据进行操作,结果出现读取脏数据现象 脏读:事务T1修改了某一数据后,事务T2读取了同一数据,而T1由于某种原因被撤销,则称T2读到了脏数据 并发执行可能产生的问题 出现三类问题的原因:破坏了事务的隔离性 有些DBMS提供脏读功能 并发执行可能产生的问题 封锁(Locking) 并发控制: 用正确的方式调度并发操作, 避免由于并发操作引起的三类问题--即保证事务的隔离性 并发控制的主要方法: 封锁机制 封锁: 是指事务T在对某个数据对象(例如表, 记录等)操作之前, 先向系统发出请求, 对其加锁. 加锁后事务T可以操作该对象, 在事务T释放它的封锁之前, 其他的事务不能更新该数据对象 封锁(Locking) 封锁协议 封锁协议: 对数据对象加锁时, 还需约定一些规则 对封锁方式规定不同的规则, 形成不同的封锁协议 一级封锁协议: 事务T在修改数据R之前必须先对其加X锁, 直到事务结束才释放 可防止丢失修改, T可恢复 如果只是读数据, 不需加锁, 不能保证可重复读, 不读脏数据 封锁协议 二级封锁协议: 一级封锁协议加上事务T在读取数据R之前必须先对其加S锁, 读完后即可释放 可防止读脏数据, 丢失修改 不能保证可重复读 封锁协议 三级封锁协议: 一级封锁协议加上事务T在读取数据R之前必须先对其加S锁, 直到事务结束才释放 可防止读脏数据, 丢失修改 能保证可重复读 不同级别的封锁协议 活锁和死锁 封锁可以产生:饥饿,活锁, 死锁 饥饿: 由于不同锁的类型导致的 活锁和死锁 封锁可以产生:饥饿,活锁, 死锁 活锁, 死锁: 由于O.S.调度顺序的随机性导致的 死锁的预防 死锁的预防 一次封锁法: 要求事务必须一次将所有要使用的数据全部加锁, 否则不能执行 例如:一次对R1和R2进行加锁 缺点 扩大封锁范围?降低并发度 当事务需要访问大量数据项时?该事务永久等待,因为需要少量数据项的事务会先执行 死锁的预防 死锁的预防 顺序封锁法: 预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁 例如:B树上的逐级封锁 缺点 封锁的数据对象多,插、删频繁?很难保序,代价大 动态封锁请求?难以预料要封锁哪些对象?很难保序 死锁的预防 死锁的预防 (有效的方法) 基于时间印的抢占与事务撤销技术 等待-死亡(wait-die)机制 基于非抢占技术 死锁的预防 等待-死亡(wait-die)机制如何解决死锁问题 死锁的预防 死锁的预防 (有效的方法) 基于时间印的抢占与事务撤销技术 受伤-等待(wound-wait)机制 基于抢占技术 死锁的预防 死锁的预防 (有效的方法) 基于时间印的抢占与事务撤销技术 受伤-等待(wound-wait)机制 基于抢占技术 封锁与时间印的区别 死锁的检测/诊断与恢复 死锁的诊断和恢复 DBMS常用方法, 有超时法和事务等待图法 超时法: 如果一个事务等待的时间超过了规定的时间, 就认为发生了死锁 缺点: 可能误诊, 规定时间不好设 优点: 简单 死锁的检测/诊断与恢复 等待图法: 是一有向图G=(T, U). 节点表示正在执行的事务, 边表示等待情况。T1?T2: T1等待T2 死锁诊断: 如果图中存在回路, 系统中发生死锁 死锁的检测/诊断与恢复 死锁恢复 选择一个处理死锁代价最小的事务, 将其撤销, 释放锁 该事务计算的时间、使用多少数据项、完成事务还

文档评论(0)

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

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

1亿VIP精品文档

相关文档