第09章事务管理-浙江工商大学.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第09章事务管理-浙江工商大学

* * * * * * * * * * * * * * * * * * * * * * * * * 两段锁协议 并行执行的所有事务均遵守两段锁协议,则对这些事务的所有并行调度策略都是可串行化的。 所有遵守两段锁协议的事务,其并行执行的结果一定是正确的 事务遵守两段锁协议是可串行化调度的充分条件,而不是必要条件 可串行化的调度中,不一定所有事务都必须符合两段锁协议。 两段锁协议 T1 Slock B 读B=2 Y=B Xlock A ? ? A=Y+1 写回A=3 Unlock B Unlock A ? ? ? ? T2 ? ? ? ? Slock A 等待 等待 等待 等待 等待 Slock A 读A=3 Y=A Xlock B B=Y+1 写回B=4 Unlock B Unlock A? T1 Slock B 读B=2 Y=B Unlock B Xlock A ? ? A=Y+1 写回A=3 Unlock A ? ? ? ? ? ? ? ? ? T2 ? ? ? ? ? Slock A 等待 等待 等待 等待 Slock A 读A=3 X=A Unlock A Xlock B B=X+1 写回B=4 Unlock B? (a) 遵守两段锁协议 (b) 不遵守两段锁协议 T1 Slock B 读B=2 Y=B Unlock B Xlock A A=Y+1 写回A=3 Unlock A T2 ?? Slock A 读A=2 X=A Unlock A Xlock B 等待 Xlock B B=X+1 写回B=3 Unlock B? (c) 不遵守两段锁协议 两段锁协议 两段锁协议与防止死锁的一次封锁法 一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行,因此一次封锁法遵守两段锁协议 但是两段锁协议并不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁 9.7 并发控制的相关的问题 一、隔离级别 二、封锁粒度 一、隔离级别 隔离级别用来不严格地表示一个事务与其它事务并发时所能容忍干扰的程度。如果可串行性得到了保证,根本就不存在干扰,换句话说,就是这种情况的隔离级别为可能的最高级别。 实际系统通常允许事务在低于最高级别的隔离级别下操作,这样可以提高事务并发度。在标准SQL规范中,定义了4个事务隔离级别: 未授权读:允许读取脏数据,但不允许丢失更新。 授权读:允许不可重复读,但不允许读脏数据。。 可重复读:禁止不可重复读和读脏数据,但是有时可能出现幻影数据。。 序列化:提供严格的事务隔离。要求事务序列化的执行,事务只能一个接一个地执行,但不能并发执行。 二、封锁粒度 X锁和S锁都是加在某一个数据对象上的 封锁的对象:逻辑单元,物理单元 例:在关系数据库中,封锁对象: 逻辑单元: 属性值、属性值集合、元组、关系、索引项、整个索引、整个数据库等 物理单元:页、物理记录等 封锁粒度 封锁对象可以很大也可以很小 例: 对整个数据库加锁 对某个属性值加锁 封锁对象的大小称为封锁的粒度(Granularity) 多粒度封锁(multiple granularity locking) 在一个系统中同时支持多种封锁粒度供不同的事务选择 二、选择封锁粒度的原则 封锁的粒度越 大,小, 系统被封锁的对象 少,多, 并发度 小,高, 系统开销 小,大, 选择封锁粒度: 考虑封锁机构和并发度两个因素 对系统开销与并发度进行权衡 选择封锁粒度的原则 需要处理多个关系的大量元组的用户事务:以数据库为封锁单位; 需要处理大量元组的用户事务:以关系为封锁单元; 只处理少量元组的用户事务:以元组为封锁单位 多粒度封锁 多粒度树 以树形结构来表示多级封锁粒度 根结点是整个数据库,表示最大的数据粒度 叶结点表示最小的数据粒度 多粒度封锁 例:三级粒度树。根结点为数据库,数据库的子结点为关系,关系的子结点为元组。 数据库 关系Rn 关系R1 元组 元组 元组 元组 …… …… …… 多粒度封锁协议 允许多粒度树中的每个结点被独立地加锁 对一个结点加锁意味着这个结点的所有后裔结点也被加以同样类型的锁 在多粒度封锁中一个数据对象可能以两种方式封锁:显式封锁和隐式封锁 显式封锁和隐式封锁 显式封锁: 直接加到数据对象上的封锁 隐式封锁: 由于其上级结点加锁而使该数据对象加上了锁 显式封锁和隐式封锁的效果是一样的 对某个数据对象加锁时系统检查的

文档评论(0)

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

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

1亿VIP精品文档

相关文档