第八章 数据库管理2剖析.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DBMS中有一个死锁测试程序: 每隔一段时间检查并发的事务之间是否发生死锁。 如果发生死锁: 只能抽取某个事务作为牺牲品,把它撤消, 做回退操作,解除它的所有封锁,恢复到该事务的初始 状态。释放出来的资源就可以分配给其他事务,使其他 事务有可能继续运行下去,就有可能消除死锁现象。 理论上讲, 系统进入死锁状态时可能会有许多事务在相互等待, 但是System R的实验表明,实际上绝大部分的死锁只涉及到两个事务,也就是事务依赖图中的循环里只有两个事务。 死锁也被形象地称作“死死拥抱” 。 2、封锁粒度 X锁和S锁都是加在某一个数据对象上的。 封锁的对象可以是逻辑单元,也可以是物理单元。 在关系数据库中,封锁对象可以是: 属性值、属性值集合、元组、关系、索引项、整个索引、 整个数据库等逻辑单元;也可以是页(数据页或索引页)、 块等物理单元。 封锁对象可以很大,比如对整个数据库加锁,也可以很小, 比如只对某个属性值加锁。 封锁对象的大小称为封锁的粒度(granularity)。 封锁粒度与系统的并发度和并发控制的开销密切相关。 封锁的粒度越大,系统中能够被封锁的对象就越少, 并发度也就越小,但同时系统开销也越小; 相反,封锁的粒度越小,并发度越高,但系统开销也就越大。 计算机系统对并行事务中并行操作的调度是随机的,而不同的调度可能会产生不同的结果,那么哪个结果是正确的,哪个是不正确的呢? 二、并发调度的可串行化 1、概念 事务的调度: 串行调度: 并发调度: 事务的执行次序称为“调度”。 如果多个事务依次执行,则称为事务的串行 调度(Serial Schedule)。 如果利用分时的方法,同时处理多个事 务,则称为事务的并发调度(Concurrent Schedule)。 在事务并发执行时,有可能破坏数据库的一致性, 或用户读了脏数据。 如果有n个事务串行调度,可有n!种不同的有效调度。 如果有n个事务并发调度,可能的并发调度数目远远大于n!。 DBMS的并发控制子系统实现: 如何产生正确的并发调度。 如何判断一个并发调度是正确的, 用并发调度的可串行化概念解决. 现在有两个事务,分别包含下列操作: 事务T1:读B;A=B十1;写回A; 事务T2:读A;B=A十1;写回B 假设A的初值为10,B的初值为2。 (a)串行调度1(先T1后T2) 时间 事务T1 数据库中A、B的值 事务T2 t0 ? 10、2 ? t1 检索B: B=2 ? ? t2 修改: A←B+1 ? ? t3 写回A: A=3 3、2 ? t5 ? ? 检索A: A=3 t6 ? ? 修改: A←A+1 t7 ? ? 写回B: B=4 t8 ? 3、4 ? 事务T1:读B;A=B十1;写回A; 事务T2:读A;B=A十1;写回B; 假设A的初值为10,B的初值为2。 时间 事务T1 数据库中A、B的值 事务T2 t0 ? 10、2 ? t1 ? ? 检索A: A=10 t2 ? ? 修改B:B←A+1 t3 ? 写回B: B=11 t5 ? 10、11 ? t6 检索B: B=11 ? ? t7 修改A: A←B+1 ? ? t8 写回A: A=12 12、11 ? (b)串行调度2 (先T2后T1) 时间 事务T1 数据库中A、B的值 事务T2 t0 ? 10、2 ? t1 检索B: B=2 ? ? t2 ? ? 检索A:A=10 t3 修改A: A←B+1 ? t5 写回A: A=3 ? ? t6 ? 3、2 修改B:B←A+1 t7 ? ? 写回B: B=11 t8 ? 3、11 ? (c)不可串行化调度(交错执行) 时间 事务T1 数据库中A、B的值 事务T2

文档评论(0)

花仙子 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档