第12章事务与并发控制.ppt

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

调度示例 遵守两段锁协议 不遵守两段锁协议 * * 12.4 并发控制中的时间戳方法 时间戳是由DBMS创建的唯一标识符,用于标识事务的启动时间。 被赋予时间戳值的顺序就是事务提交给系统的顺序。 事务时间戳是一个单调增长的数字,它通常基于系统时钟。事务被管理成按时间戳顺序运行。 * * 时间戳性质 唯一性假设不存在相同的时间戳值, 单调性假设时间戳的值总是递增的。 在相同事务中,对数据库的READ和WRITE操作必须有相同的时间戳, 数据库管理系统按时间戳顺序执行操作,确保了事务的可串行性。 * * 冲突事务的解决 如果两个事务冲突了,则通常是停止一个事务,重新调度这个事务并赋予一个新的时间戳值。 * * 粒度时间戳 是最后一个事务访问它的时间戳的一个记录,一个活动的事务访问的每个粒度必须有一个粒度时间戳。 如果存储包括粒度的话,则粒度时间戳可能对读访问引起额外的写操作。为避免这个问题,可以将粒度时间戳作为内存中的一个表来维护。 * * 时间戳排序 基于时间戳的并发控制方法中有三个基本变量: 总的时间戳排序。 部分时间戳排序。 多版本时间戳排序。 * * 总时间戳排序 该算法依赖于在时间戳排序中对访问粒度的维护,它是在冲突访问中终止一个事务。 读和写访问没有区别,因此,对每个粒度时间戳来说只需要一个值。 * * 部分时间戳排序 该算法只排序不可交换的活动来提高总的时间戳排序,在这种情况下,同时存储读和写粒度时间戳。 该算法允许比最后一个更改粒度的事务晚的任何事务读取粒度。 如果某个事务试图更改之前已经被更晚的事务访问的粒度,则终止该事务。 比总时间戳排序算法终止的事务少,但需要额外存储粒度时间戳。 * * 多版本时间戳排序 该算法存储几个被更改粒度的版本,允许事务为它访问的所有粒度查看一致的版本集合。 这个算法降低了重新启动有写-写冲突的事务而产生的冲突。 每次对粒度的更新都创建一个新的版本,这个版本包含相关的粒度时间戳。需要读访问粒度的事务查看比这个事务旧的必威体育精装版的版本。 * * 12.4.3 解决时间戳中的冲突 为处理时间戳算法中的冲突,让包含在冲突中的一些事务等待并终止其他的一些事务。 主要的冲突解决策略: 等待-死亡(wait-die) 受伤-等待(wound-wait) * * 等待-死亡 如果新的事务已经首先访问了粒度的话,则旧的事务等待新的事务。 如果新的事务试图在旧的并发事务之后访问粒度,则新的事务被终止(死亡)并等待被重新启动。 * * 受伤-等待 如果新的事务试图在旧的并发事务之后访问一个粒度,则先悬挂旧的事务。 如果新的事务已经访问了两者都希望的粒度的话,则旧的事务将等待新的事务提交。 * * 12.4.4 时间戳的缺点 存储在数据库中的每个值需要两个附加的时间戳字段, 一个用于存储最后读此字段的时间 一个用于存储最后更改此字段的时间 增加了内存需求以及处理数据库的开销。 * * 12.5 乐观的并发控制方法 该方法是基于假设数据库操作的冲突是很少的,而且最好是让事务完全执行并只在事务提交前检查冲突。 该方法也称为确认方法或验证方法。 当事务正在执行时不检查冲突。 该方法是让事务没有限制的执行直到事务被提交。 * * 乐观并发控制方法的三个阶段 乐观的并发控制方法中,每个事务都经历三个阶段: 读阶段 验证阶段 写阶段 * * 读阶段 更改使用私有的粒度副本, 在这个阶段,事务从数据库读取已提交的值,执行需要的计算,并对数据库值的私有副本进行更改。 事务的所有更改操作都被记录在一个临时更改文件中,这个文件不能被其他的事务访问。 * * 验证阶段 验证事务以确保所做的更改不影响数据库的完整性和一致性。 如果验证测试正确,则事务进入到写阶段 如果验证测试不正确,则事务被重新启动,并忽略所做的更改。 如果在这个阶段检测到冲突,则事务将被终止和重新启动。 * * 验证算法 验证算法必须检查事务是否具有: 查看在事务启动后事务提交的全部更改。 在事务启动后没有读取由事务提交更改的粒度。 * * 写阶段 更改被永久地存储到数据库中,而且更改的粒度成为公共的,否则,更改将被忽略,并且事务被重新启动。 这个阶段只针对读-写事务,而不针对只读事务。 * * 乐观的并发控制方法的优缺点 优点 当冲突很少时这个技术非常有效,它只撤销产生偶然冲突的事务。 撤销只涉及数据的本地副本,不涉及数据库,因此不会有级联撤销。 缺点 处理冲突的开销很大,因为冲突事务必须被回滚。 长的事务更可能有冲突,而且会因为与短的事务有冲突而被重复地回滚。 * * * * 开场白: * 锁的相容矩阵 * * 12.3.1 锁的粒度 粒度:由并发控制程序选择的作为保护单位的数据项的大小。 主要的加锁粒度: 数据库级:对整个数据库加锁。 表级:对整张表加锁。

文档评论(0)

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

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

1亿VIP精品文档

相关文档