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

数据库原理十一章课件.ppt

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库原理 主讲:赵海霞 第十一章 并发控制 并发控制概述 封锁 封锁协议 活锁和死锁 并发调度的可串行性 两段锁协议 封锁的粒度 问题的产生 多用户数据库系统的存在 允许多个用户同时使用的数据库系统 飞机定票数据库系统 银行数据库系统 特点:在同一时刻并发运行的事务数可达数百个 示例 示例(续) 这种情况称为数据库的不一致性,是由并发操作引起的。 在并发操作情况下,对甲、乙两个事务的操作序列的调度是随机的。 若按上面的调度序列执行,甲事务的修改就被丢失。 原因:第4步中乙事务修改A并写回后覆盖了甲事务的修改 事务并发操作带来的问题 并发操作引起的数据不一致性包括三类 丢失修改 不可重复读 读脏数据 事务并发带来的丢失修改 A、丢失修改问题 两个事务T1和T2读入同一数据并修改,T2的提交结果破坏了T1提交的结果,导致T1的修改被丢失。 上面飞机订票例子就属此类 并发操作引起的不可重复读 B、不可重复读 不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。 并发操作引起的不可重复读 B、不可重复读 不可重复读包括三种情况: (1)事务T1读取某一数据后,事务T2对其做了修改,当事务T1再次读该数据时,得到与前一次不同的值 并发操作引起的不可重复读 (2)事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录消失了 (3)事务T1按一定条件从数据库中读取某些数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。 后两种不可重复读有时也称为幻影现象(Phantom Row) 事务并发带来的读脏数据 C、读“脏”数据 读“脏”数据是指: 事务T1修改某一数据,并将其写回磁盘 事务T2读取同一数据后,T1由于某种原因被撤销 这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致 T2读到的数据就为“脏”数据,即不正确的数据 小结 产生上述三类不一致性的主要原因 并发操作破坏了事务的隔离性,事务间相互干扰 三种主要解决技术 封锁技术 (Locking) ★ 时间戳技术(Timestamp) 乐观控制法 商用的DBMS一般都采用封锁方法 11.2 封锁 概念 事务T在对某个数据对象(如数据库、表、记录等)操作之前,首先向系统发出加锁请求以便获得对数据对象相应的控制 在事务T释放它所获得的锁之前,其他事务不能更新此数据对象 锁的类型 一个事务对某个数据对象加锁后究竟拥有什么样的控制由封锁的类型决定。 排它锁(eXclusive lock):写锁 若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁 保证其他事务在T释放A上的锁之前不能再读取和修改A 共享锁(Share lock):读锁 若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁 保证其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改 锁的相容矩阵 Y:相容的请求 N:不相容的请求 11.3 活锁和死锁问题 封锁技术可以有效地解决并行操作的一致性问题,但也带来一些新的问题 死锁 活锁 活锁问题 活锁 举例说明: 事务T1封锁某数据后,事务T2请求封锁未获得并等待,而T1释放锁后,事务T3请求封锁并获得,T3释放锁后,事务T4请求封锁并获得……T2可能永远等待 解决办法:采用先来先服务的策略 死锁问题 死锁 举例说明: 事务T1和T2各自封锁了数据R1和R2后,又各自请求封锁R2和R1,因都无法获得而等待对方释放的现象 解决的两类方法 预防死锁 允许发生死锁,采用一定手段定期诊断并解除死锁 死锁的预防 一次封锁法 办法:每个事务一次将所有要使用的数据全部加锁 存在问题?降低系统并发度;难于事先精确确定封锁对象 顺序封锁法 办法:预先规定数据对象的封锁顺序,所有事务均按此顺序 存在问题?维护成本:数据库系统中封锁的数据对象极多,并且在不断地变化;难以实现:很难事先确定每一个事务要封锁哪些对象 死锁的诊断与解决 死锁的诊断 超时法 办法:等待时间超过规定的时限 问题? 等待图法 办法:画等待图,发现回路 死锁的解决 检测到死锁,选择一个处理死锁代价最小的事务,强行撤销,使其它事务可以继续下去 恢复撤销事务所执行的数据修改操作 11.4 事务调度的可串行性 引言 DBMS对并发事务不同的调度可能会产生不同的结果 什么样的调度是正确的? 概念 可串行化的调度:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同 可串行性

文档评论(0)

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

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

1亿VIP精品文档

相关文档