第7章数据库安全保护试题.ppt

  1. 1、本文档共51页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2.共享型封锁(Shared?Lock,简称S锁) 共享锁又称为读锁,如果事务T对某数据R加上S锁后,仍允许其他事务再对该数据加S锁,但决不允许任何事务对该数据加X锁。 若事务T对数据对象A加上S锁,则事务T可以读数据A,但不能修改数据A,其它事务只能再对A加S锁,而不能加X锁,。 * 使用S锁的操作有三个: (1)申请S锁操作“SFIND?R” 。 (2)升级和写操作“UPDX?R” 。 (3)解除S锁操作“SUnlock(?R)”:表示事务T解除对数据R的S锁操作应该合并到事务的结束操作中。 * 表7.3 排它锁与共享锁的相容矩阵 T1 T2 X S - X N N Y S N Y Y - Y Y Y * 3.利用封锁来解决并发控制所带来的问题 ? T1 ? T2 ? T1 ? T2 ? T1 ? T2 XFIND(x) Read(x)=100 ? X:=x+1 Write(x)=101 COMMIT XUnlock x ? XFIND(x) 等待 等待 等待 等待 获取 Xlock x Read(x)=101 ? X:= x+1 Write(x)=102 COMMIT XUnlock x XFIND(x) Read(x)=100 X:=2x Write(x)=200 ? (rollback) x恢复为100 XUnlock x ? ? ? SFIND(x) 等待 等待 等待 获取 Slock x Read(x)=100 SUnlock x SFIND(x) Read(x)=100 ? ? ? Read(x)=100 SUnlock x ? ? XFIND(x) 等待 等待 等待 获取 Xlock x Read(x)=100 X:=2x Write(x)=200 COMMIT XUnlock x * (a)丢失更新 (b)读脏数据 (c)不可重复读 4. 封锁粒度(Granularity) 封锁对象的大小称为封锁粒度。 封锁粒度与系统的并发度和并发控制的开销密切相关 封锁的粒度越大,数据库所能够封锁的数据单元就越少,并发度就越小,系统开销也越小; 反之,封锁的粒度越小,数据库所能够封锁的数据单元就越多,并发度较高,但系统开销也就越大。 * 5. 封锁带来的问题 封锁协议解决了并发操作带来的数据不一致性问题,但有可能产生活锁、饿死和死锁问题,其中最主要的就是“死锁”(deadlock)问题。 * 图7-4活锁和死锁 ? T1 ? T2 ? T3 ? T4 ? T1 ? T2 XFIND(x) Read(x)=100 … ….. COMMIT XUnlock x ? XFIND(x) 等待 等待 等待 等待 等待 等待 等待 等待 ? ? ? ? ? ? XFIND(x) .. .. XUnlock x ? ? ? ? ? ? ? ? XFIND(x) … … SUnlock x XFIND(R1) .. XFIND(R2) 等待 等待 等待 等待 等待 等待 ? ? XFIND(R2) .. .. XFIND(R1) 等待 等待 等待 等待 ? * (a)活锁 (b)死锁 避免活锁的方法:采用先来先服务的策略。 避免饿死现象的方法:用授权加锁的方式。 解决死锁问题主要有两类方法: 一是采取一定措施来预防死锁的发生, 二是允许发生死锁,采用一定手段定期诊断系统中有无死锁,若有则解除之。 * 6.死锁的预防 预防死锁通常有两种方法: 1)一次封锁法 它要求每个事务必须一次将所有要使用的数据全部加锁, 否则就不能继续执行。 2)顺序封锁法 它是预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。 * 7.死锁的诊断与解除 判断系统中是否存在死锁有两种方法: 1)超时法 如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。 2)等待图法 DBMS的并发控制子系统一旦检测到系统中存在死锁,就要设法解除。通常采用的方法是选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有的锁,使其他事务得以继续运行下去。 * 7.3.4 并行调度的可串行化 1.事务的调度、串行调度和并发调度 事务的执行次序称为“事务的调度”。 如果多个事务依次执行,则称为事务的串行调度。 如果利用分时的方法,同时处理多个事务,则称为事务的并发调度。 2. 并发调度的可串行化 多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同,我们称这种调度策略为可串行化的调度。 * 7.4 数据库的恢复 数据库恢复是指在数据库系统发生各种故障后

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档