第20讲 并发制.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文档。上传文档
查看更多
第20讲 并发制

第十一章 并发控制 11.1 并发操作带来的数据不一致性问题 2.不可重复读 事务1读取某一数据后: 1)事务2对其做了修改,当事务1再次读该数据时,得到与前一次不同的值。 2)事务2删除了其中部分记录,当事务1再次读取数据时,发现某些记录神密地消失了。 3)事务2插入了一些记录,当事务1再次按相同条件读取数据时,发现多了一些记录。 后两种不可重复读有时也称为幻影现象(phantom row)。 3. 读“脏”数据 11.2 封锁 3. X锁与S锁的控制方式可用相容矩阵表示: 2.死锁 解除死锁 选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有的锁,使其它事务能继续运行下去。 回顾 事务的并发执行可能带来哪些问题? 为解决上述问题,DBMS通常采用什么技术? 基本封锁类型分为哪两种? 封锁技术可能带来什么问题? 如何解决活锁问题? 如何解决死锁问题? 11.4 并发调度的可串行性 例:现在有两个事务,分别包含下列操作:   事务T1:读B;A=B+1;写回A; 事务T2:读A;B=A+1;写回B; 假设A的初值为2,B的初值为2。 串行调度策略 几个事务的并行执行是正确的,当且仅当其结果与某一串行调度结果相同。这种调度策略称为可串行化的调度。 分析下列并发调度是否正确? 2. 冲突可串行化调度(了解) 如何判断调度是可串行化的? 冲突可串行化是可串行化调度的充分条件。 冲突操作:不同事务对同一个数据的读写操作和写写操作。 例:Ri(x)和Wj(x), Wi(x)和Wj(x) 一个调度Sc在保证冲突操作次序不变的情况下,通过交换两个事务不冲突操作的次序得到另一个调度Sc’,如果Sc’是串行的,则称调度Sc是冲突可串行化的调度。 判断下列调度是否为冲突可串行化? Sc1=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B) r2(B)w2(B) 11.5 两段锁协议 如何保证并发操作的调度是正确的? 两段锁协议(Two-Phase Locking,简称2PL); 理论上已证明使用2PL产生的调度是可串行化的。 两段锁协议的内容 1.在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁; 2.在释放一个封锁之后,事务不再申请和获得任何其他封锁。 分析“两段”锁的含义 分析如下封锁序列,判断其对应事务是否遵守2PL? 事务1的封锁序列: Slock A... Slock B... Xlock C... Unlock B...Unlock A...Unlock C; 事务2的封锁序列: Slock A... Unlock A...Slock B... Xlock ... Unlock C... Unlock B; T1 Slock B 读B=2 Y=B Xlock A ? ? A=Y+1 写回A=3 Unlock B Unlock A ? ? ? ? 11.6 封锁的粒度 X锁和S锁都是加在某一个数据对象上 封锁对象的大小称为封锁粒度(Granularity)。 思考:封锁粒度与并发度及系统开销的关系 多粒度封锁:在一个系统中同时支持多种封锁粒度供不同的事务选择。 适当选择封锁粒度以求最优效果 思考:对于下列各种事务如何选择封锁粒度:处理大量元组的事务,处理少量元组的事务? 11.6.1 多粒度封锁 多粒度树:以树形结构来表示多级封锁粒度。根结点是整个数据库,表示最大的数据粒度;叶结点表示最小的数据粒度。 多粒度封锁协议:允许多粒度树中的每个结点被独立地加锁;对一个结点加锁意味着这个结点的所有后裔结点也被加以同样类型的锁。 在多粒度封锁中一个数据对象可能以两种方式封锁 显式封锁: 直接加到数据对象上的封锁; 隐式封锁: 由于其上级结点加锁而使该数据对象加上了锁。 思考:事务申请加锁时, 系统检查封锁冲突的过程。 对某个数据对象加锁时系统检查的内容 该数据对象 有无显式封锁与之冲突 所有上级结点 检查本事务的显式封锁是否与该数据对象上的隐式封锁冲突(由上级结点封锁造成的) 所有下级结点 看上面的显式封锁是否与本事务的隐式封锁(将加到下级结点的封锁)冲突 11.6.2 意向锁 引进意向锁得目的:提高加锁时系统的检查效率 意向锁的使用 对任一结点加基本锁,必须先对它的上层结点加意向锁; 如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁。 思考:对某元组加锁,则需对哪些数据对象加意向锁? 三种常用的意向锁: 意向共享锁(Intent Share Lock,简称IS锁) 意向排它锁(Intent Exclusive Lock,简称IX锁) 共享意向排它锁(Share Intent E

文档评论(0)

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

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

1亿VIP精品文档

相关文档