【教学课件】第7章事务管理.ppt
《【教学课件】第7章事务管理.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第7章事务管理.ppt(72页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第7 7章章 事务管理事务管理n n 恢复恢复恢复恢复保证事务在并发执行时满足保证事务在并发执行时满足保证事务在并发执行时满足保证事务在并发执行时满足ACIDACIDACIDACID准准准准则的技术。则的技术。则的技术。则的技术。n n 并发控制并发控制并发控制并发控制保证事务在并发执行时满足保证事务在并发执行时满足保证事务在并发执行时满足保证事务在并发执行时满足ACIDACIDACIDACID准则的技术。准则的技术。准则的技术。准则的技术。事务管理(事务管理(transaction management):):7.1 7.1 恢复引论恢复引论 故障的可能性总是存在的。解决故障的措施有二:故
2、障的可能性总是存在的。解决故障的措施有二:一是尽可能一是尽可能提高可靠性提高可靠性;二是;二是恢复恢复。这里主要讨论发生故障后,恢复数据库至一致状这里主要讨论发生故障后,恢复数据库至一致状态的技术,即态的技术,即恢复技术恢复技术。系统发生故障时,可能会导致数据的丢失系统发生故障时,可能会导致数据的丢失(loss),要恢复丢失的数据,必须有后备副本。要恢复丢失的数据,必须有后备副本。对于恢复,数据冗余是必需的!对于恢复,数据冗余是必需的!一致一致状状态态 1.1.1.1.单纯以后备副本为基础的恢复技术单纯以后备副本为基础的恢复技术单纯以后备副本为基础的恢复技术单纯以后备副本为基础的恢复技术 2.
3、2.2.2.以后备副本和运行记录为基础的恢复以后备副本和运行记录为基础的恢复以后备副本和运行记录为基础的恢复以后备副本和运行记录为基础的恢复 3.3.3.3.基于多副本的恢复技术基于多副本的恢复技术基于多副本的恢复技术基于多副本的恢复技术恢复技术大致可以分为下列三种恢复技术大致可以分为下列三种恢复技术大致可以分为下列三种恢复技术大致可以分为下列三种1.1.1.1.单纯以后备副本为基础的恢复技术单纯以后备副本为基础的恢复技术单纯以后备副本为基础的恢复技术单纯以后备副本为基础的恢复技术n从文件系统继承而来,周期性的把磁盘上的数据库转从文件系统继承而来,周期性的把磁盘上的数据库转储(储(dumpdu
4、mp)到脱机存放的磁带上。到脱机存放的磁带上。失效失效取后备副本取后备副本取后备副本取后备副本取后备副本取后备副本更新丢失更新丢失更新丢失更新丢失取后备副本取后备副本取后备副本取后备副本IDIDIDID取后备副本取后备副本ID失效失效n 增量转储(增量转储(IDID)单纯以后备副本为基础的恢复技术:单纯以后备副本为基础的恢复技术:优点:优点:实现简单,不增加数据库正常运行实现简单,不增加数据库正常运行时的开销。时的开销。缺点:缺点:不能恢复到数据库的最近一致的状不能恢复到数据库的最近一致的状态。态。多用于文件系统以及小型的不重要的数据多用于文件系统以及小型的不重要的数据库系统。库系统。2.2.
5、2.2.以后备副本和运行记录为基础的恢复以后备副本和运行记录为基础的恢复以后备副本和运行记录为基础的恢复以后备副本和运行记录为基础的恢复 运行记录(运行记录(log或或journal)由系统维护,一般包由系统维护,一般包括下列内容:括下列内容:(1 1)前像()前像(Before Image,BIBefore Image,BI)当数据库被一个事务更新时,所涉及的物理块更当数据库被一个事务更新时,所涉及的物理块更新前的映像(新前的映像(imageimage)称为该事务的称为该事务的前像(前像(BIBI),前前像以物理块为单位;有了前像可以使数据库恢复到像以物理块为单位;有了前像可以使数据库恢复到
6、更新前状态,对应操作更新前状态,对应操作undoundo(撤销撤销)。(2 2)后像)后像(After Image,AI)After Image,AI)当数据库被一个事务更新时,所涉及的物理块更新当数据库被一个事务更新时,所涉及的物理块更新后的映像(后的映像(imageimage)称为该事务的称为该事务的后像(后像(AIAI),后像也后像也以物理块为单位;有了后像,即便更新的数据丢失了,以物理块为单位;有了后像,即便更新的数据丢失了,仍然可以使数据库恢复到更新后的状态,相当于重做一仍然可以使数据库恢复到更新后的状态,相当于重做一次更新,对应操作次更新,对应操作redoredo(重做重做)。问题
7、:前像问题:前像(BI)BI)、后像后像(AI)AI)和事务操作的关系?和事务操作的关系?修改修改有有前像前像 有有后像后像插入插入没没前像前像 有有后像后像删除删除有有前像前像 没没后像后像(3 3)事务状态)事务状态 记录每个事务的状态,以便在恢复时作不同的处理记录每个事务的状态,以便在恢复时作不同的处理(COMMITCOMMIT和和NOT COMMITNOT COMMIT)。)。事务失败事务失败事务开始事务开始活动状态活动状态操作结束操作结束事务提交事务提交回卷回卷事务结束事务结束 提交提交(Commit)Commit)成功执行成功执行(do all)do all)。回卷回卷(Rollb
8、ackRollback或或Abort)Abort)消除事务对数据库的影消除事务对数据库的影响响(do nothing)do nothing)。对恢复而言,至少要区分一个对恢复而言,至少要区分一个事务是否提交事务是否提交!实现方法实现方法最近后备副本最近后备副本 运运 行行 记记 录录失效失效最近后备副本最近后备副本 运运 行行 记记 录录 基于后备副本与运行记录的恢复如上图所示,当数基于后备副本与运行记录的恢复如上图所示,当数据库失效时,取出据库失效时,取出最近后备副本最近后备副本,然后根据,然后根据运行记录运行记录,对未提交的事务用前像卷回对未提交的事务用前像卷回向后恢复向后恢复(backw
9、ard backward recovery)recovery);对已提交的事务,必要时用后像重做对已提交的事务,必要时用后像重做向前恢复向前恢复(forward recovery)forward recovery)。这种恢复技术,需保持运行记录,这将会影响数据这种恢复技术,需保持运行记录,这将会影响数据库的正常工作速度,但可以使数据库恢复到最近一致状库的正常工作速度,但可以使数据库恢复到最近一致状态。大多数商品化态。大多数商品化DBMSDBMS采用这种恢复技术。采用这种恢复技术。3.3.基于多副本的恢复技术基于多副本的恢复技术 如果系统中有多个如果系统中有多个DBDB副本,且这些副本具有副本,
10、且这些副本具有独立独立的失效模式的失效模式(independent failure mode)independent failure mode),则可利用则可利用这些副本互为备份,用于恢复。这些副本互为备份,用于恢复。此技术在分布式数据库系统中应用的较多。此技术在分布式数据库系统中应用的较多。近年来,由于硬件价格的下降,也采用镜像磁盘近年来,由于硬件价格的下降,也采用镜像磁盘(mirrored disks)mirrored disks)技术。技术。写数据时,两个磁盘写数据时,两个磁盘都写入同样的内容。都写入同样的内容。当一个磁盘的数据丢当一个磁盘的数据丢失时,可以用另一个磁盘失时,可以用另一个
11、磁盘的数据来恢复。(的数据来恢复。(两盘同两盘同时故障的概率可以假设为时故障的概率可以假设为零!零!)磁盘磁盘1 1磁盘磁盘2 2控制器控制器1 1控制器控制器2 2CPU1CPU1CPU2CPU2 镜像磁盘系统镜像磁盘系统 下面主要讨论第二种恢下面主要讨论第二种恢复技术。复技术。7.2 7.2 运行记录的结构运行记录的结构 运行记录的存储要避免与数据库运行记录的存储要避免与数据库运行记录的存储要避免与数据库运行记录的存储要避免与数据库“全军覆没全军覆没全军覆没全军覆没”。运行记录运行记录运行记录运行记录(log)log)log)log)一般不能和数据库放在同一磁盘上,一般不能和数据库放在同一
12、磁盘上,一般不能和数据库放在同一磁盘上,一般不能和数据库放在同一磁盘上,以免两者皆失。(假设以免两者皆失。(假设以免两者皆失。(假设以免两者皆失。(假设loglogloglog和和和和DBMSDBMSDBMSDBMS同时失效的概率为零;同时失效的概率为零;同时失效的概率为零;同时失效的概率为零;一般假设一般假设一般假设一般假设loglogloglog不会损坏,若运行中不会损坏,若运行中不会损坏,若运行中不会损坏,若运行中DBMSDBMSDBMSDBMS测得测得测得测得loglogloglog损坏,损坏,损坏,损坏,则采取强制措施,例如拒绝新事务,完成已提交事务,则采取强制措施,例如拒绝新事务,
13、完成已提交事务,则采取强制措施,例如拒绝新事务,完成已提交事务,则采取强制措施,例如拒绝新事务,完成已提交事务,停止运行,修复停止运行,修复停止运行,修复停止运行,修复loglogloglog)。)。)。)。n n运行记录的结构因运行记录的结构因运行记录的结构因运行记录的结构因DBMSDBMSDBMSDBMS而异而异而异而异n nLogLogLogLog基本内容基本内容基本内容基本内容 1.1.1.1.活动事务表(活动事务表(活动事务表(活动事务表(active transaction list-ATLactive transaction list-ATLactive transaction
14、list-ATLactive transaction list-ATL)记录所有正在执行,尚未提交的事务的标识符记录所有正在执行,尚未提交的事务的标识符记录所有正在执行,尚未提交的事务的标识符记录所有正在执行,尚未提交的事务的标识符(transaction identifier-TID)transaction identifier-TID)transaction identifier-TID)transaction identifier-TID)。2.2.2.2.提交事务表(提交事务表(提交事务表(提交事务表(committed transaction list-CTLcommitted tr
15、ansaction list-CTLcommitted transaction list-CTLcommitted transaction list-CTL)记录所有已提交事务的标识符记录所有已提交事务的标识符记录所有已提交事务的标识符记录所有已提交事务的标识符。注意注意注意注意:提交时,先将要提交事务的提交时,先将要提交事务的提交时,先将要提交事务的提交时,先将要提交事务的TIDTIDTIDTID加入加入加入加入CTLCTLCTLCTL,再再再再从从从从ATLATLATLATL中删除相应的中删除相应的中删除相应的中删除相应的TIDTIDTIDTID。否则,一旦发生故障,该事否则,一旦发生故障
16、,该事否则,一旦发生故障,该事否则,一旦发生故障,该事务的状态将丢失!务的状态将丢失!务的状态将丢失!务的状态将丢失!问题:某事务需要提交时,该按照什么顺序对问题:某事务需要提交时,该按照什么顺序对问题:某事务需要提交时,该按照什么顺序对问题:某事务需要提交时,该按照什么顺序对ATLATLATLATL和和和和CTLCTLCTLCTL进行更新?进行更新?进行更新?进行更新?3.3.前像文件前像文件 可以看成一个堆文件。每个物理块有个块标识符可以看成一个堆文件。每个物理块有个块标识符BIDBID(block identifierblock identifier)。)。BIDBID由由TIDTID、
17、关系名和逻辑关系名和逻辑块号组成。块号组成。逻辑块号在关系中是唯一的。逻辑块号在关系中是唯一的。如果一个事如果一个事务需要卷回,可以在前像文件中找出该事务的所有前务需要卷回,可以在前像文件中找出该事务的所有前像块,按照逻辑块号写入到关系的对应块,从而消除像块,按照逻辑块号写入到关系的对应块,从而消除该事务对数据库的影响。该事务对数据库的影响。undo undo满足幂等性满足幂等性:undo(undo(undo undo(undo(undoundo(x)=undo(x)undo(x)=undo(x)因此,因此,undoundo失败可以再失败可以再undo!undo!4.4.后像文件后像文件 结构
18、与前像文件相仿,不过记的是后像。在恢复结构与前像文件相仿,不过记的是后像。在恢复时,可按提交事务表中的事务次序,按逻辑块号,时,可按提交事务表中的事务次序,按逻辑块号,写入其后像。这相当于按提交的次序重做各个事务。写入其后像。这相当于按提交的次序重做各个事务。redoredo满足幂等性满足幂等性:redo(redo(redoredo(redo(redoredo(x)=redo(x)redo(x)=redo(x)问题:问题:undoundo操作需要按照事务的次序吗?为什么?操作需要按照事务的次序吗?为什么?取后备复本后,之前的运行记录就失去了价值,对取后备复本后,之前的运行记录就失去了价值,对恢
19、复来说,只要保留最近后备复本以后的运行记录。但恢复来说,只要保留最近后备复本以后的运行记录。但运行记录仍可能很大。可采用下列措施减小运行记录规运行记录仍可能很大。可采用下列措施减小运行记录规模。模。1.1.不保留已提交事务的前像不保留已提交事务的前像2.2.有选择性的保留后像有选择性的保留后像3.3.合并后像(对给定逻辑块号的物理块,如多次更新,合并后像(对给定逻辑块号的物理块,如多次更新,可只保留最近的后像)可只保留最近的后像)如何判断该做如何判断该做undoundo还是还是redoredo呢?下一节,将解决这呢?下一节,将解决这个问题。个问题。7.3 7.3 更新事务的执行与恢复更新事务的
20、执行与恢复 1 提交规则(提交规则(Commit Rule)后像必须在事务提交前,写入非易失性存储器(后像必须在事务提交前,写入非易失性存储器(DB或或log)。)。更新事务执行时,应遵守下两条规则:更新事务执行时,应遵守下两条规则:2 先记后写规则(先记后写规则(Log Ahead Rule)如果后像在事务提交前写入数据库,则必须把前像如果后像在事务提交前写入数据库,则必须把前像先写入先写入log。在执行一个更新事务时,按后像写入在执行一个更新事务时,按后像写入DBDB的时间,有的时间,有三种可能的方案。三种可能的方案。即后像不能仅留在内存中!即后像不能仅留在内存中!三种更新策略三种更新策略
21、三种更新策略三种更新策略a)后像在事务提交前完全写入后像在事务提交前完全写入DBTID active listB.I Log(按按Log Ahead Rule)A.I DBTID commit listdelete TID from active list在这种情况下,如果出现故障,如何恢复?在这种情况下,如果出现故障,如何恢复?RestartRestart时,对每个时,对每个TIDTID,查两个查两个listlist:Commit listActive list undo delete TID from active list nothing to dob)后像在事务提交后写入数据库后像在事
22、务提交后写入数据库TID active listA.I Log(按按commit rule)TID commit listA.I DB delete TID from active list在这种情况下,如果出现故障,如何恢复在这种情况下,如果出现故障,如何恢复在这种情况下,如果出现故障,如何恢复在这种情况下,如果出现故障,如何恢复RestartRestart时,对每个时,对每个TIDTID,查两个查两个listlist:Commit listActive list delete TID from active list redo,delete TID from active list not
23、hing 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在这种情况下,如果出现故障,如何恢复?在这种情况下,如果出现故障,如何恢复?RestartRestartRestartRestart时,对每个时,对每个时,对每个时,对每个TIDTIDTIDTID,查两个查两个查两个查两个listlistlistlist:Commit listAct
24、ive list undo redo,delete TID from active list nothing to do思考:方案思考:方案3均匀的将写入均匀的将写入DB的的I/O操作分散在事务操作分散在事务提交前后,有什么优点?提交前后,有什么优点?有利于磁盘均衡负载有利于磁盘均衡负载 7.5 7.5 消息的处理消息的处理 一个事务常常要给用户发送有影响的消息一个事务常常要给用户发送有影响的消息(message),不是指需要用户输入的指示消息不是指需要用户输入的指示消息。例如:例如:“付款付款2000元元”以及以及“立即执行下一步处理立即执行下一步处理”等。等。发送消息也是事务执行结果的一部
25、分,应该遵循发送消息也是事务执行结果的一部分,应该遵循“要么不做,要么全做要么不做,要么全做”的原则。的原则。但是,消息往往难以但是,消息往往难以用用“undo”操作来消除其影响。操作来消除其影响。因此,在事务结束前,消息不能发出,只有等事务因此,在事务结束前,消息不能发出,只有等事务结束后才能发出。结束后才能发出。带来什么问题?带来什么问题?消息发送委托消息管理(消息发送委托消息管理(消息发送委托消息管理(消息发送委托消息管理(message manager-MMmessage manager-MMmessage manager-MMmessage manager-MM)子系)子系)子系)子
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 事务管理
限制150内