- 1、本文档共63页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库事务课件讲述
* * 10.6 两段锁协议 ? 两段锁协议与防止死锁的一次封锁法的比较: 一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行,因此一次封锁法遵守两段锁协议; 但是两段锁协议并不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁。 例:遵守两段锁协议的事务发生死锁 T1 T2 Slock B R(B)=2 ? ? Xlock A 等待 等待 ? Slock A R(A)=2 ? Xlock B 等待 * * 本章目录 10.1 并发控制概述 10.2 封锁 10.3 封锁协议 10.4 活锁和死锁 10.5 并发调度的可串行性 10.6 两段锁协议 10.7 封锁的粒度 11.8 小结 * * 10.7 封锁的粒度 封锁粒度(Granularity) X锁和S锁都是加在 某一个数据对象上 封锁粒度即指封锁 对象的大小 封锁的对象 逻辑单元 物理单元 例:在关系数据库中,封锁对象可以是: ? 逻辑单元: 属性值、属性值的集合、元组、关系、 索引项、整个索引、整个数据库等 ? 物理单元:页(数据页或索引页)、物理记录等 * * 10.7 封锁的粒度 封锁粒度的关系: 选择封锁粒度: 考虑封锁对象和并发度两个因素,对系统开销与并发度进行权衡。 需要处理多个关系的大量元组的用户事务:以数据库为封锁单位; 需要处理大量元组的用户事务:以关系为封锁单元; 只处理少量元组的用户事务:以元组为封锁单位 * * 10.7.1 多封锁粒度 多粒度封锁(Multiple Granularity Locking): 在一个系统中同时支持多种封锁粒度供不同的事务选择 多粒度树:以树形结构来表示多级封锁粒度,根结点是整个数据库,表示最大的数据粒度;叶结点表示最小的数据粒度。 * * 10.7.1 多封锁粒度 多粒度封锁协议: 允许多粒度树中的每个结点被独立地加锁; 对一个结点加锁意味着这个结点的所有后裔结点也被加以同样类型的锁; 在多粒度封锁中一个数据对象可能是显式封锁或者隐式封锁 -显式封锁:直接加到数据对象上的封锁 -隐式封锁:该数据对象没有独立加锁,是由于其上级结点 加锁而使该数据对象加上了锁 例如:事务T要对关系R1加X锁,需要检查如下的封锁冲突: 1.系统必须有哪些信誉好的足球投注网站其上级结点数据库、关系R1 2.还要有哪些信誉好的足球投注网站R1的下级结点,即R1中的每一个元组 3.如果其中某一个数据对象已经加了不相容锁,则T必须等待 * * 10.7.1 多封锁粒度 对某个数据对象加锁,系统要检查: 该数据对象 有无显式封锁与之冲突 所有上级结点 检查本事务的显式封锁是否与该数据对象上的隐式封锁 冲突 (由上级结点已加的封锁造成的) 所有下级结点 看上面的显式封锁是否与本事务的隐式封锁(将加到下 级结点的封锁)冲突 如此检查,效率太低! 意向锁(intention lock) * * 10.7.2 意向锁 意向锁( intention lock): 如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁 对任一结点加基本锁,必须先对它的上层结点加意向锁 例如:对任一元组加锁时,必须先对它所在的数 据库和关系加意向锁 常用意向锁 意向共享锁(Intent Share Lock,简称IS锁) 意向排它锁(Intent Exclusive Lock,简称IX锁) 共享意向排它锁(Share Intent Exclusive Lock,简称SIX锁) * * 10.7.2 意向锁 意向共享锁(Intent Share Lock,简称IS锁) 表示它的后裔结点拟加S锁 例如:事务T1要对数据库D中的关系R中的某个元组加S锁, 则要首先对关系R和数据库D加IS锁 意向排它锁(Intent Exclusive Lock,简称IX锁) 表示它的后裔结点拟加X锁 例如:事务T1要对数据库D中的关系R中的某个元组加X锁, 则要首先对关系R和数据库D加IX锁 共享意向排它锁(Share Intent Exclusive Lock,简称SIX锁) 如果对一个数据对象加SIX锁,表示对它加S锁,再加IX锁, 即SIX = S + IX 例如:对某个表加SIX锁,则表示该事务要: -读整个表(所以要对该表加S锁) -同时会更新个别元组(所以要对该表加IX锁) * * 10.7.2 意向锁 意向锁相容矩阵 * * 10.7.2 意向锁 锁的强度: 锁的强度是指它对其他锁的排斥程
文档评论(0)