05事务和并发控制.ppt

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

第5章 事务和并发控制 第5章 事务和并发控制 事务 锁 乐观并发控制 时间戳排序 并发控制方法的比较 小结 事务 事务 由客户定义的针对服务器对象的一组操作,它们组成一个不可分割的单元,由服务器执行。 事务的目标 在多个事务访问对象以及服务器面临故障的情况下,保证所有由服务器管理的对象始终保持一个一致的状态。 事务 全有或全无:或者完全成功,或者不留下任何效果 故障原子性  即使服务器崩溃,事务的效果也是原子的。 持久性  一旦事务完成,它的所有效果将被保存到持久存储中 隔离性 每个事务的影响不受其它事务的影响 事务 Account接口中的操作 Branch接口中的操作 事务 并发控制 并发控制协议都是基于串行相等的标准,源于用来解决操作冲突的规则。 锁 乐观并发控制 时间戳排序 事务 事务-并发控制 更新丢失问题  初值:帐户A、B、C分别为$100、$200、$300  操作:两次转帐(A、B→C),每次转帐金额为B当前帐户余额的10% 期望结果:B的终值应为$242 事务 事务-并发控制 不一致检索  初值:帐户A、B分别为$200、$200  操作:转帐+查询银行所有帐户的总余额 期望结果:总余额为$400 事务 事务-并发控制 串行等价性  - 事务具有相同效果   读操作返回相同的值,并且事务结束时,所有对象的实例变量也具有相同的值。   - 使用串行等价性作为并发执行的判断标准,可防止更新丢失和不一致检索问题。    事务 事务 事务-并发控制 冲突操作  - 冲突   两个操作的执行效果和它们的执行次序相关  - Read和Write操作的冲突规则      事务 冲突操作(续)  - 串行等价性   两个事务串行等价的充要条件是,两个事务中所有的冲突操作都按相同的次序在它们访问的对象上执行。  - 非串行等价地执行事务示例   事务T:x=read(i); write(i,10); write(j,20); 事务U:y=read(j); write(j,30); z=read(i);      事务 事务-事务放弃时的恢复 脏数据读取  某个事务读取了另一个未提交事务写入的数据 事务-事务放弃时的恢复 事务可恢复性  策略:推迟事务提交,直到它读取更新结果的其它事务都已提交。 连锁放弃   - 某个事务的放弃可能导致后续更多事务的放弃   - 防止方法:只允许事务读取已提交事务写入的对象 事务-事务放弃时的恢复 过早写入   - 一些数据库在放弃事务时,将变量的值恢复到该事务所有write操作的“前映像”。   - 为了保证使用前映像进行事务恢复时获得正确的结果,write操作必须等到前面修改同一对象的其它事务提交或放弃后才能进行。 事务-事务放弃时的恢复 事务的严格执行   - 严格执行:read和write操作都推迟到写同一对象的其它事务提交或放弃后进行   - 可以真正保证事务的隔离性 临时版本   - 目的:事务放弃后,能够清除所有对象的更新   - 方法 事务的所有操作更新将值存储在自己的临时版本中 事务提交时,临时版本的数据才会用来更新对象 第5章 事务和并发控制 事务 锁 乐观并发控制 时间戳排序 并发控制方法的比较 小结 锁 互斥锁是一种简单的事务串行化实现机制 事务访问对象前请求加锁 若对象已被其它事务锁住,则请求被挂起,直至对象被解锁 使用示例 锁 锁 两阶段加锁 目的:保证两个事务的所有的冲突操作对必须以相同的次序执行 增长阶段:不断获取新锁 收缩阶段:释放锁 严格的两阶段加锁 目的:防止事务放弃导致的脏数据读取、过早写入等问题 方法:所有在事务执行过程中获取的新锁必须在事务提交或放弃后才能释放 锁 读锁和写锁 目的:提高并发度 支持多个并发事务同时读取某个对象 允许一个事务写对象 事务的操作冲突规则 如果事务T已经对某个对象进行了读操作,那么并发事务U在事务T提交或放弃前不能写该对象。 如果事务T已经对某个对象进行了写操作,那么并发事务U在事务T提交或放弃前不能写或读该对象。 读锁和写锁的相容性 锁 锁 嵌套事务的加锁需求 嵌套事务集   - 要求:不能观察到其它嵌套事务集的部分效果   - 实现方法:父事务继承子事务的所有锁,锁的继承从底层向高层传递。 嵌套事务集中的事务 - 要求:不能观察到同一事务集中其它事务的部分效果。   - 实现方法:父事务不允许和子事务并发运行;同层次的事务可并发执行。 锁 嵌套事务的加锁规则(一) 获得读锁   如果子事务获取了某个对象的读锁,那么其它活动事务不能获取该对象的写锁,只有该子事务的父事务们可以持有该写锁。 获得

文档评论(0)

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

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

1亿VIP精品文档

相关文档