- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章_事务并发控制讲述
第8章 事务并发控制 8.1 事务并发执行管理概述 DB(数据)元素 或称为DB对象,泛指DB关系表、数据页或元组等,具体要视具体场合或上下文而定。 读一个DB元素X 通常是先将X从磁盘页带到DB缓冲区,然后再复制到事务局部内存的相应变量t中。 写一个DB元素X 总是先修改局部内存中的变量t,再将t复制到DB缓冲区,必要时候再将X从DB缓冲区刷新到磁盘。 这里共涉及到三个地址空间:磁盘空间、DB缓冲区(虚存空间)和事务局部主存空间。 8.1.1 事务的基本概念与特性 事务定义:是DBMS中一个可执行的、具有一定偏序的动作序列。 动作(actions): 指‘读/写’DB数据元素,或指定事务结束行为的动作,如commit(提交)、abort(中止)等。 对指定的事务T,以上所列的几个动作可简记为 RT(X), WT(X), COMMITT, ABORTT。 实际DB事务中也可能含有一些不影响并发的、事务管理一般不显式列出的其它动作,如读写OS文件、内部赋值计算等。 所谓的偏序,是指事务中有些关键动作顺序很重要,但也有些动作的前后相对顺序并不重要。 事务的四个基本特性 原子性(atomic) 事务的执行具有原子性。要么成功,所有事务动作都被正常执行;要么失败,任何一个事务动作都未被执行。如果执行中间出错或被中止,则之前已执行过的那些动作必须全部撤销,事务回滚(roll back)。 一致性(consistency) 当事务独立执行时,必须能保持DB状态的一致性。 孤立性(isolation) 尽管DBMS内核通常以并发形式管理事务,但对用户而言,仍是以事务被‘孤立’执行,来理解其执行效果。 持久性(durability) 当事务被成功执行后,它对DB数据造成的影响应是持久性的;即使是发生系统突然崩溃时,也应如此。 8.1.2 调度的基本概念 调度(Scheduling)定义 指对一组可能来自多个不同事务动作流的一种偏序序列安排 完全调度(complete schedule) 调度所包含的所有事务都有提交或中止动作。 串行调度(series schedule) 调度中,来自不同事务的动作没有交替。 8.1.2 调度的基本概念 例8.1 一个包含了两个事务T1、 T2的调度。 这两个事务都没有Commit或Abort动作; 列表中,从上到下的逐行排序,隐含了动作执行时间的先后。 8.1.3 事务的并发执行 交替执行不同事务的动作,是DBMS并发响应多用户请求,提高系统性能的必然要求。但并不是所有的交替都是允许的。 两个一致性事务,当它们交替执行时,可能导致DB状态出现不一致。 交替执行可能导致异常的几种典型情况 读未提交数据(WR冲突) 不可重复的读(WR冲突) 重写未提交的数据(WW冲突) 调度中包含中止事务 可恢复调度与可串行调度 可恢复调度 如果一个调度S只包含满足以下规定的事务Ti,则称调度S是可恢复的。 令事务Ti可能读取DB元素集{X},而{Tj | j≠i}是至少改变了元素集合{X}中一个元素的所有事务集合,则事务Ti必须在{Tj | j≠i}中所有事务都提交之后才能提交。 可串行化调度 当一个包含一组提交事务的调度执行时,如果对任何一致性DB造成的影响,与某个包含同组事务的串行调度相同。 冲突等价与冲突可串行化 冲突定义 称两个动作是冲突的或不可交换的,如果它们属于同一事务,或当它们都对同一DB元素操作且其中至少有一个是写操作。 称两个调度S1和S2冲突等价,如果满足: (1)在S1与S2中,都包含了同一组事务,以及属于这组事务的相同动作集; (2)S1中任意两个提交事务的每个冲突动作对的先后顺序,与S2中发生的情况相同。 冲突可串行化 称调度S是冲突可串行化的,如果S与某个串行调度的冲突等价。 8.1.5 视可串行化(view serializability) 视等价定义:令两调度S1和S2包含同样的事务集,如果满足以下三个条件,则称它们视等价。 若在S1中事务Ti读元素A的初值,则在S2中事务Ti也必须读元素A的初值; 若在S1中事务Ti读被事务Tj写过的元素A值,则在S2中事务Ti也必须读被事务Tj写过的元素A值; 若S1中由某事务Ti执行了对DB元素A的最后写操作,则在S2中,Ti也须是对A执行最后写操作的事务。 如果一个调度视等价于某串行调度,则称该调度是视可串行化的。 视可串行化是一种比冲突可串行化弱的可串行化条件。 例8.2 给定调度S: R1(A), W2(A), COMMIT(T2), W1(A), COMMIT(T1), W3(A), COMMIT(T3) 试分析它的可串行性。 它等价于串行调度T1,T2,T3(两调度中,T1读到的A值相同,且A
文档评论(0)