第7章事务管理课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第7章事务管理课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 事务管理 课件
- 资源描述:
-
1、第第7 7章章 事务管理事务管理事务管理(事务管理(transaction management):):故障的可能性总是存在的。解决故障的措施有二:故障的可能性总是存在的。解决故障的措施有二:一是尽可能一是尽可能提高可靠性提高可靠性;二是;二是恢复恢复。这里主要讨论发生故障后,恢复数据库至一致状这里主要讨论发生故障后,恢复数据库至一致状态的技术,即态的技术,即恢复技术恢复技术。系统发生故障时,可能会导致数据的丢失系统发生故障时,可能会导致数据的丢失(loss),要恢复丢失的数据,必须有后备副本。要恢复丢失的数据,必须有后备副本。对于恢复,数据冗余是必需的!对于恢复,数据冗余是必需的!一致一致状
2、状态态n从文件系统继承而来,周期性的把磁盘上的数据库转从文件系统继承而来,周期性的把磁盘上的数据库转储(储(dumpdump)到脱机存放的磁带上。到脱机存放的磁带上。失效失效取后备副本取后备副本取后备副本取后备副本取后备副本取后备副本更新丢失更新丢失更新丢失更新丢失取后备副本取后备副本取后备副本取后备副本IDIDIDID取后备副本取后备副本ID失效失效n 增量转储(增量转储(IDID)单纯以后备副本为基础的恢复技术:单纯以后备副本为基础的恢复技术:优点:优点:实现简单,不增加数据库正常运行实现简单,不增加数据库正常运行时的开销。时的开销。缺点:缺点:不能恢复到数据库的最近一致的状不能恢复到数据
3、库的最近一致的状态。态。多用于文件系统以及小型的不重要的数据多用于文件系统以及小型的不重要的数据库系统。库系统。运行记录(运行记录(log或或journal)由系统维护,一般包由系统维护,一般包括下列内容:括下列内容:(1 1)前像()前像(Before Image,BIBefore Image,BI)当数据库被一个事务更新时,所涉及的物理块更当数据库被一个事务更新时,所涉及的物理块更新前的映像(新前的映像(imageimage)称为该事务的称为该事务的前像(前像(BIBI),前前像以物理块为单位;有了前像可以使数据库恢复到像以物理块为单位;有了前像可以使数据库恢复到更新前状态,对应操作更新前
4、状态,对应操作undoundo(撤销撤销)。(2 2)后像)后像(After Image,AI)After Image,AI)当数据库被一个事务更新时,所涉及的物理块更新当数据库被一个事务更新时,所涉及的物理块更新后的映像(后的映像(imageimage)称为该事务的称为该事务的后像(后像(AIAI),后像也后像也以物理块为单位;有了后像,即便更新的数据丢失了,以物理块为单位;有了后像,即便更新的数据丢失了,仍然可以使数据库恢复到更新后的状态,相当于重做一仍然可以使数据库恢复到更新后的状态,相当于重做一次更新,对应操作次更新,对应操作redoredo(重做重做)。问题:前像问题:前像(BI)B
5、I)、后像后像(AI)AI)和事务操作的关系?和事务操作的关系?修改修改有有前像前像 有有后像后像插入插入没没前像前像 有有后像后像删除删除有有前像前像 没没后像后像(3 3)事务状态)事务状态 记录每个事务的状态,以便在恢复时作不同的处理记录每个事务的状态,以便在恢复时作不同的处理(COMMITCOMMIT和和NOT COMMITNOT COMMIT)。)。事务失败事务失败事务开始事务开始活动状态活动状态操作结束操作结束事务提交事务提交回卷回卷事务结束事务结束 提交提交(Commit)Commit)成功执行成功执行(do all)do all)。回卷回卷(RollbackRollback或或
6、Abort)Abort)消除事务对数据库的影消除事务对数据库的影响响(do nothing)do nothing)。对恢复而言,至少要区分一个对恢复而言,至少要区分一个事务是否提交事务是否提交!实现方法实现方法最近后备副本最近后备副本 运运 行行 记记 录录失效失效最近后备副本最近后备副本 运运 行行 记记 录录 基于后备副本与运行记录的恢复如上图所示,当数基于后备副本与运行记录的恢复如上图所示,当数据库失效时,取出据库失效时,取出最近后备副本最近后备副本,然后根据,然后根据运行记录运行记录,对未提交的事务用前像卷回对未提交的事务用前像卷回向后恢复向后恢复(backward backward
7、recovery)recovery);对已提交的事务,必要时用后像重做对已提交的事务,必要时用后像重做向前恢复向前恢复(forward recovery)forward recovery)。这种恢复技术,需保持运行记录,这将会影响数据这种恢复技术,需保持运行记录,这将会影响数据库的正常工作速度,但可以使数据库恢复到最近一致状库的正常工作速度,但可以使数据库恢复到最近一致状态。大多数商品化态。大多数商品化DBMSDBMS采用这种恢复技术。采用这种恢复技术。如果系统中有多个如果系统中有多个DBDB副本,且这些副本具有副本,且这些副本具有独立独立的失效模式的失效模式(independent fail
8、ure mode)independent failure mode),则可利用则可利用这些副本互为备份,用于恢复。这些副本互为备份,用于恢复。此技术在分布式数据库系统中应用的较多。此技术在分布式数据库系统中应用的较多。近年来,由于硬件价格的下降,也采用镜像磁盘近年来,由于硬件价格的下降,也采用镜像磁盘(mirrored disks)mirrored disks)技术。技术。写数据时,两个磁盘写数据时,两个磁盘都写入同样的内容。都写入同样的内容。当一个磁盘的数据丢当一个磁盘的数据丢失时,可以用另一个磁盘失时,可以用另一个磁盘的数据来恢复。(的数据来恢复。(两盘同两盘同时故障的概率可以假设为时故障
9、的概率可以假设为零!零!)磁盘磁盘1 1磁盘磁盘2 2控制器控制器1 1控制器控制器2 2CPU1CPU1CPU2CPU2 镜像磁盘系统镜像磁盘系统 下面主要讨论第二种恢下面主要讨论第二种恢复技术。复技术。3.3.前像文件前像文件 可以看成一个堆文件。每个物理块有个块标识符可以看成一个堆文件。每个物理块有个块标识符BIDBID(block identifierblock identifier)。)。BIDBID由由TIDTID、关系名和逻辑关系名和逻辑块号组成。块号组成。逻辑块号在关系中是唯一的。逻辑块号在关系中是唯一的。如果一个事如果一个事务需要卷回,可以在前像文件中找出该事务的所有前务需要
10、卷回,可以在前像文件中找出该事务的所有前像块,按照逻辑块号写入到关系的对应块,从而消除像块,按照逻辑块号写入到关系的对应块,从而消除该事务对数据库的影响。该事务对数据库的影响。undo undo满足幂等性满足幂等性:undo(undo(undo undo(undo(undoundo(x)=undo(x)undo(x)=undo(x)因此,因此,undoundo失败可以再失败可以再undo!undo!4.4.后像文件后像文件 结构与前像文件相仿,不过记的是后像。在恢复结构与前像文件相仿,不过记的是后像。在恢复时,可按提交事务表中的事务次序,按逻辑块号,时,可按提交事务表中的事务次序,按逻辑块号,
11、写入其后像。这相当于按提交的次序重做各个事务。写入其后像。这相当于按提交的次序重做各个事务。redoredo满足幂等性满足幂等性:redo(redo(redoredo(redo(redoredo(x)=redo(x)redo(x)=redo(x)问题:问题:undoundo操作需要按照事务的次序吗?为什么?操作需要按照事务的次序吗?为什么?取后备复本后,之前的运行记录就失去了价值,对取后备复本后,之前的运行记录就失去了价值,对恢复来说,只要保留最近后备复本以后的运行记录。但恢复来说,只要保留最近后备复本以后的运行记录。但运行记录仍可能很大。可采用下列措施减小运行记录规运行记录仍可能很大。可采用
12、下列措施减小运行记录规模。模。1.1.不保留已提交事务的前像不保留已提交事务的前像2.2.有选择性的保留后像有选择性的保留后像3.3.合并后像(对给定逻辑块号的物理块,如多次更新,合并后像(对给定逻辑块号的物理块,如多次更新,可只保留最近的后像)可只保留最近的后像)如何判断该做如何判断该做undoundo还是还是redoredo呢?下一节,将解决这呢?下一节,将解决这个问题。个问题。1 提交规则(提交规则(Commit Rule)后像必须在事务提交前,写入非易失性存储器(后像必须在事务提交前,写入非易失性存储器(DB或或log)。)。更新事务执行时,应遵守下两条规则:更新事务执行时,应遵守下两
13、条规则:2 先记后写规则(先记后写规则(Log Ahead Rule)如果后像在事务提交前写入数据库,则必须把前像如果后像在事务提交前写入数据库,则必须把前像先写入先写入log。在执行一个更新事务时,按后像写入在执行一个更新事务时,按后像写入DBDB的时间,有的时间,有三种可能的方案。三种可能的方案。即后像不能仅留在内存中!即后像不能仅留在内存中!a)后像在事务提交前完全写入后像在事务提交前完全写入DBTID active listB.I Log(按按Log Ahead Rule)A.I DBTID commit listdelete TID from active list在这种情况下,如果
14、出现故障,如何恢复?在这种情况下,如果出现故障,如何恢复?RestartRestart时,对每个时,对每个TIDTID,查两个查两个listlist:Commit listActive list undo delete TID from active list nothing to dob)后像在事务提交后写入数据库后像在事务提交后写入数据库TID active listA.I Log(按按commit rule)TID commit listA.I DB delete TID from active listRestartRestart时,对每个时,对每个TIDTID,查两个查两个listl
15、ist:Commit listActive list delete TID from active list redo,delete TID from active list nothing to doc)后像在事务提交前后写入数据库后像在事务提交前后写入数据库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在这种情况下,如果出现故障,如何恢复?在这种情况下,如果出现故障,如何恢复?Commit listAc
16、tive list undo redo,delete TID from active list nothing to do思考:方案思考:方案3均匀的将写入均匀的将写入DB的的I/O操作分散在事务操作分散在事务提交前后,有什么优点?提交前后,有什么优点?有利于磁盘均衡负载有利于磁盘均衡负载 一个事务常常要给用户发送有影响的消息一个事务常常要给用户发送有影响的消息(message),不是指需要用户输入的指示消息不是指需要用户输入的指示消息。例如:例如:“付款付款2000元元”以及以及“立即执行下一步处理立即执行下一步处理”等。等。发送消息也是事务执行结果的一部分,应该遵循发送消息也是事务执行结果
17、的一部分,应该遵循“要么不做,要么全做要么不做,要么全做”的原则。的原则。但是,消息往往难但是,消息往往难以用以用“undo”操作来消除其影响。操作来消除其影响。因此,在事务结束前,消息不能发出,只有等事务因此,在事务结束前,消息不能发出,只有等事务结束后才能发出。结束后才能发出。带来什么问题?带来什么问题?MMTiTi消息消息1 1消息消息2 2MMMM终端终端消息(消息(MSGMSG)确认(确认(ACKACK)思考:系统失效时,要做思考:系统失效时,要做undoundo和和redoredo操作;然而操作;然而ATLATL长度有限,长度有限,CTLCTL可能较长。可能较长。这将导致什么结果?
展开阅读全文