第7章 事务管理.ppt
《第7章 事务管理.ppt》由会员分享,可在线阅读,更多相关《第7章 事务管理.ppt(72页珍藏版)》请在麦多课文档分享上搜索。
1、第7章 事务管理,恢复保证事务在并发执行时满足ACID准则的技术。并发控制保证事务在并发执行时满足ACID准则的技术。,事务管理(transaction management):,7.1 恢复引论,故障的可能性总是存在的。解决故障的措施有二:一是尽可能提高可靠性;二是恢复。,这里主要讨论发生故障后,恢复数据库至一致状态的技术,即恢复技术。,系统发生故障时,可能会导致数据的丢失(loss),要恢复丢失的数据,必须有后备副本。,对于恢复,数据冗余是必需的!,1.单纯以后备副本为基础的恢复技术2.以后备副本和运行记录为基础的恢复3.基于多副本的恢复技术,恢复技术大致可以分为下列三种,1.单纯以后备副
2、本为基础的恢复技术,从文件系统继承而来,周期性的把磁盘上的数据库转储(dump)到脱机存放的磁带上。,失效,取后备副本,取后备副本,取后备副本,更新丢失,更新丢失,增量转储(ID),单纯以后备副本为基础的恢复技术:优点:实现简单,不增加数据库正常运行时的开销。缺点:不能恢复到数据库的最近一致的状态。,多用于文件系统以及小型的不重要的数据 库系统。,2.以后备副本和运行记录为基础的恢复,运行记录(log或journal)由系统维护,一般包括下列内容:,(1)前像(Before Image,BI)当数据库被一个事务更新时,所涉及的物理块更新前的映像(image)称为该事务的前像(BI),前像以物理
3、块为单位;有了前像可以使数据库恢复到更新前状态,对应操作undo(撤销)。,(2)后像(After Image,AI)当数据库被一个事务更新时,所涉及的物理块更新后的映像(image)称为该事务的后像(AI),后像也以物理块为单位;有了后像,即便更新的数据丢失了,仍然可以使数据库恢复到更新后的状态,相当于重做一次更新,对应操作redo(重做) 。,问题:前像(BI)、后像(AI)和事务操作的关系?,修改有前像 有后像 插入没前像 有后像 删除有前像 没后像,(3)事务状态,记录每个事务的状态,以便在恢复时作不同的处理(COMMIT和NOT COMMIT)。,提交(Commit)成功执行(do
4、all)。回卷(Rollback或Abort)消除事务对数据库的影响(do nothing)。,对恢复而言,至少要区分一个事务是否提交!,实现方法,最近后备副本,运 行 记 录,基于后备副本与运行记录的恢复如上图所示,当数据库失效时,取出最近后备副本,然后根据运行记录,对未提交的事务用前像卷回向后恢复(backward recovery);对已提交的事务,必要时用后像重做向前恢复(forward recovery)。,这种恢复技术,需保持运行记录,这将会影响数据库的正常工作速度,但可以使数据库恢复到最近一致状态。大多数商品化DBMS采用这种恢复技术。,3.基于多副本的恢复技术,如果系统中有多个
5、DB副本,且这些副本具有独立的失效模式(independent failure mode),则可利用这些副本互为备份,用于恢复。,此技术在分布式数据库系统中应用的较多。,近年来,由于硬件价格的下降,也采用镜像磁盘(mirrored disks)技术。,写数据时,两个磁盘都写入同样的内容。当一个磁盘的数据丢失时,可以用另一个磁盘的数据来恢复。(两盘同时故障的概率可以假设为零!),下面主要讨论第二种恢 复技术。,7.2 运行记录的结构,运行记录的存储要避免与数据库“全军覆没”。,运行记录(log)一般不能和数据库放在同一磁盘上,以免两者皆失。(假设log和DBMS同时失效的概率为零;一般假设log
6、不会损坏,若运行中DBMS测得log损坏,则采取强制措施,例如拒绝新事务,完成已提交事务,停止运行,修复log)。,运行记录的结构因DBMS而异 Log基本内容,1.活动事务表(active transaction list-ATL),记录所有正在执行,尚未提交的事务的标识符 (transaction identifier-TID)。,2.提交事务表(committed transaction list-CTL),记录所有已提交事务的标识符。,注意:提交时,先将要提交事务的TID加入CTL,再从ATL中删除相应的TID。否则,一旦发生故障,该事务的状态将丢失!,问题:某事务需要提交时,该按照什
7、么顺序对ATL和CTL进行更新?,3.前像文件,可以看成一个堆文件。每个物理块有个块标识符BID(block identifier)。BID由TID、关系名和逻辑块号组成。逻辑块号在关系中是唯一的。如果一个事务需要卷回,可以在前像文件中找出该事务的所有前像块,按照逻辑块号写入到关系的对应块,从而消除该事务对数据库的影响。,undo满足幂等性:undo(undo(undoundo(x)=undo(x),因此,undo失败可以再undo!,4.后像文件,结构与前像文件相仿,不过记的是后像。在恢复时,可按提交事务表中的事务次序,按逻辑块号,写入其后像。这相当于按提交的次序重做各个事务。,redo满足
8、幂等性: redo(redo(redoredo(x)=redo(x),问题:undo操作需要按照事务的次序吗?为什么?,取后备复本后,之前的运行记录就失去了价值,对恢复来说,只要保留最近后备复本以后的运行记录。但运行记录仍可能很大。可采用下列措施减小运行记录规模。,1.不保留已提交事务的前像 2.有选择性的保留后像 3.合并后像(对给定逻辑块号的物理块,如多次更新,可只保留最近的后像),如何判断该做undo还是redo呢?下一节,将解决这 个问题。,7.3 更新事务的执行与恢复,1 提交规则(Commit Rule)后像必须在事务提交前,写入非易失性存储器(DB 或log)。,更新事务执行时,
9、应遵守下两条规则:,2 先记后写规则(Log Ahead Rule)如果后像在事务提交前写入数据库,则必须把前像先写入log。,在执行一个更新事务时,按后像写入DB的时间,有三种可能的方案。,即后像不能仅留在内存中!,三种更新策略,a) 后像在事务提交前完全写入DBTID active listB.I Log (按Log Ahead Rule)A.I DBTID commit listdelete TID from active list,在这种情况下,如果出现故障,如何恢复?,Restart时,对每个TID,查两个list:,b) 后像在事务提交后写入数据库TID active listA.
10、I Log (按commit rule)TID commit listA.I DB delete TID from active list,在这种情况下,如果出现故障,如何恢复,Restart时,对每个TID,查两个list:,c) 后像在事务提交前后写入数据库TID active listA.I, B.I Log (按2 rules)A.I DB (partially done)TID commit listA.I DB (completed)delete TID from active list,在这种情况下,如果出现故障,如何恢复?,Restart时,对每个TID,查两个list:,思考
11、:方案3均匀的将写入DB的I/O操作分散在事务提交前后,有什么优点?,有利于磁盘均衡负载,7.5 消息的处理,一个事务常常要给用户发送有影响的消息(message),不是指需要用户输入的指示消息。,例如:“付款2000元”以及“立即执行下一步处理”等。,发送消息也是事务执行结果的一部分,应该遵循“要么不做,要么全做”的原则。但是,消息往往难以用“undo”操作来消除其影响。,因此,在事务结束前,消息不能发出,只有等事务结束后才能发出。,消息发送委托消息管理(message manager-MM)子系统执行。,事务执行时,将需要发送的消息转给MM,MM为每个事务建立一个消息队列。,MM,Ti,当
12、事务正常结束时(包括提交和回卷),事务通知MM发送消息;当事务因故障被撤销时,MM将把该事务的消息丢弃。,为了保证消息能可靠的发送给有关用户,MM采用“发送-确认”方式传递。,MM对事务委托发送的消息,在事务正常结束前,允许事务增加和删除;一旦事务结束,MM就把消息存于不易失存储器中。,7.6 失效的类型及恢复的对策,一种恢复方法通常只对某些类型的失效有用。,通常的失效可以分为以下三类:,1.事务失效(transaction failure)事务应不可预知的原因而夭折。例如:数据库中没有要访问的数据、输入数据类型不对、除数为零等。,事务失效时DB未被破坏,系统控制在手。且事务失效 一定发生在事
13、务提交前。,恢复措施:MM丢弃该事务的消息队列;如果需要,进行undo操作;从ATL删除该事务的TID,释放该事务所占资源。,2.系统失效(system failure)系统(包括OS和DBMS)崩溃,需要重新启动(restart),DB未被破坏,但系统失去控制。例如:掉电、除数据库存储介质以外的软、硬件故障等。,恢复措施:重新启动OS和DBMS;恢复DB致一致状态(对未提交的事务进行undo操作 对已提交的事务进行redo操作)。,只有当数据库恢复到一致状态后,才允许用户访问数据库。,系统中,活动事务表(ATL)的长度是有限的;由于累积效应,提交事务表(CTL)可能很长。,思考:系统失效时,
14、要做undo和redo 操作;然而ATL长度有限,CTL可能较长。 这将导致什么结果?,由于事务可以在提交前和提交后将数据的后像分别写入数据库, 因而对CTL中的事务只能全部做redo,很费时(可能CTL中的很 多事务已经完成将后像写入数据库,但鉴别代价很大)。,为了减少恢复时大量redo操作的工作量,在运行过程中,DBMS每隔一定时间在运行记录中设置一个检查点(checkpointCP),在检查点,DBMS强制写入所有已提交事务的后像。,显然,在最近检查点以前提交的 事务,恢复时,不用redo。,取CP过程一般如下:,暂停事务的执行;写入上一个CP以后所提交事务的后像;在log的CTL中记下
15、检查点;恢复事务的执行。,取CP很影响系统的正常运行,而只有在发生系统失 效时,才有其减少redo工作量的效益。,3.介质失效(media failure)磁盘发生故障,DB被破坏。,修复系统,必要时更新磁盘;如果系统(OS和DBMS)崩溃,重新启动系统;加载最近后备副本;用log中的后像重做取最近后备副本后提交的所有事务。,恢复措施:,7.7 并发控制,7.7.1 数据库系统中的并发,1.串行访问(serial access)事务顺序执行。,2.并发访问(concurrent access)DBMS可同时接纳多个事务,事务可在时间上重叠执行。,交叉并发(interleaved concurr
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 事务管理 PPT
