第13章-数据库-数据库恢复技术课件

上传人:仙*** 文档编号:241626518 上传时间:2024-07-11 格式:PPT 页数:70 大小:1.34MB
返回 下载 相关 举报
第13章-数据库-数据库恢复技术课件_第1页
第1页 / 共70页
第13章-数据库-数据库恢复技术课件_第2页
第2页 / 共70页
第13章-数据库-数据库恢复技术课件_第3页
第3页 / 共70页
点击查看更多>>
资源描述
第第1313章章 数据库恢复技术数据库恢复技术o13.1 13.1 恢复的基本概念恢复的基本概念o13.2 13.2 数据库故障的种类数据库故障的种类o13.3 13.3 数据库恢复的类型数据库恢复的类型o13.4 13.4 恢复技术恢复技术o13.5 13.5 缓冲区管理缓冲区管理*1概述概述o计算机同其他任何设备一样,都有可能计算机同其他任何设备一样,都有可能发生故障。发生故障。o这这种种情况一旦发生,就有可能造成数据情况一旦发生,就有可能造成数据丢失。丢失。o数据库系统必须采取必要的措施,以保数据库系统必须采取必要的措施,以保证不会或尽可能减少数据丢失。证不会或尽可能减少数据丢失。o数据库恢复数据库恢复是是DBMSDBMS必须提供的功能必须提供的功能。*213.113.1恢复的基本概念恢复的基本概念o数据库恢复是指当数据库发生故障时,数据库恢复是指当数据库发生故障时,将数据库恢复到正确(一致性)状态的将数据库恢复到正确(一致性)状态的过程。过程。o数据库恢复是基于事务的原子性特性。数据库恢复是基于事务的原子性特性。o数据库恢复过程通常遵循一个可预测的数据库恢复过程通常遵循一个可预测的方案。方案。o恢复机制有恢复机制有两个关键问题两个关键问题:如何建立备份:如何建立备份数据;如何利用备份数据进行恢复。数据;如何利用备份数据进行恢复。*3数据转储数据转储o数据库恢复采用的基本技术数据库恢复采用的基本技术:数据转储数据转储(也称为(也称为数据库备份数据库备份)。)。o转储就是定期地将整个数据库复制到辅转储就是定期地将整个数据库复制到辅助存储设备上,比如磁带、磁盘助存储设备上,比如磁带、磁盘。o数据转储数据转储只能将数据库恢复到转储时的只能将数据库恢复到转储时的状态。如果想恢复到故障发生时的状态,状态。如果想恢复到故障发生时的状态,则必须利用转储之后的事务日志则必须利用转储之后的事务日志。*4转储分类转储分类o静态转储静态转储n在系统中无运行事务时进行。在系统中无运行事务时进行。n在转储期间不允许对数据库进行任何操在转储期间不允许对数据库进行任何操作。作。o动态转储动态转储n不用等待正在运行的事务结束不用等待正在运行的事务结束。n在转储在转储期间期间允许运行新的事务允许运行新的事务。*5静态与动态转储比较静态与动态转储比较o静态转储静态转储n实现简单,实现简单,n静态转储得到的一定是数据库的一个一致性静态转储得到的一定是数据库的一个一致性副本。副本。n转储期间转储期间但会降低数据库的可用性。但会降低数据库的可用性。o动态转储动态转储n不能保证转储结束后的数据库副本是正确的不能保证转储结束后的数据库副本是正确的n必须利用日志将数据库恢复到一致性状态必须利用日志将数据库恢复到一致性状态n转储期间转储期间不会降低数据库的可用性不会降低数据库的可用性。*6转储内容分类转储内容分类o海量转储海量转储:每次转储全部数据库,每次转储全部数据库,o增量转储增量转储:每次只转储上一次转储之后修改每次只转储上一次转储之后修改过的数据。过的数据。o从恢复的角度看,用海量转储的数据库副本从恢复的角度看,用海量转储的数据库副本进行恢复进行恢复更更方便,但如果数据量很大,事务方便,但如果数据量很大,事务处理又比较频繁,则增量转储处理又比较频繁,则增量转储会会更有效。更有效。o海量转储和增量转储可以是动态的,也可以海量转储和增量转储可以是动态的,也可以是静态的。是静态的。*713.2 13.2 数据库故障的种类数据库故障的种类o数据库故障是指导致数据库值出现错数据库故障是指导致数据库值出现错误描述状态的情况,误描述状态的情况,o影响数据库运行的故障有多种影响数据库运行的故障有多种:n事务内部的故障事务内部的故障n系统故障系统故障n其它故障其它故障*8事务内部的故障事务内部的故障o可预期的可预期的n这这类类故障可通过事务程序本身发现。故障可通过事务程序本身发现。n如银行转账事务中,如果如银行转账事务中,如果A A账户金额不账户金额不足,则不能进行转账。足,则不能进行转账。o非预期性的非预期性的n这类这类故障不能由应用程序来处理。故障不能由应用程序来处理。n如运算溢出或因死锁而被撤销的事务如运算溢出或因死锁而被撤销的事务。*9事务故障事务故障o事务故障意味着事务没有达到终点,数事务故障意味着事务没有达到终点,数据库可能处于不正确的状态。据库可能处于不正确的状态。o数据库的恢复机制要在不影响其他事务数据库的恢复机制要在不影响其他事务运行的情况下,强行撤销该事务中的全运行的情况下,强行撤销该事务中的全部操作,使该事务就像没发生过一样。部操作,使该事务就像没发生过一样。o这类恢复操作称为这类恢复操作称为事务撤销事务撤销(UNDOUNDO)。)。*10系统故障系统故障o是指造成系统停止运转、系统要重启是指造成系统停止运转、系统要重启的故障。例如的故障。例如:n硬件错误(硬件错误(CPUCPU故障)故障)n操作系统故障操作系统故障n突然停电等。突然停电等。o这这类类故障会影响正在运行的所有事务,故障会影响正在运行的所有事务,但不破坏数据库。但不破坏数据库。*11系统故障产生的结果系统故障产生的结果o一些未完成事务的结果可能已经送入物一些未完成事务的结果可能已经送入物理数据库中,从而造成数据库可能处于理数据库中,从而造成数据库可能处于不正确状态;不正确状态;o有些已经提交的事务可能有一部分结果有些已经提交的事务可能有一部分结果还保留在缓冲区中,尚未写到物理数据还保留在缓冲区中,尚未写到物理数据库中,库中,因此因此会丢失这些事务对数据的修会丢失这些事务对数据的修改,使数据库处于不一致状态。改,使数据库处于不一致状态。*12系统故障恢复方法系统故障恢复方法o恢复子系统在系统重新启动时必须恢复子系统在系统重新启动时必须:n撤销所有未完成的事务撤销所有未完成的事务n重做所有已提交的事务重做所有已提交的事务o从而从而保证将数据库恢复到一致状态。保证将数据库恢复到一致状态。*13其他故障其他故障o介质故障或由计算机病毒引起的故障或破介质故障或由计算机病毒引起的故障或破坏,坏,均均归为其归为其他他故障。故障。o介质故障介质故障指外存故障,如磁盘损坏等。这指外存故障,如磁盘损坏等。这类故障会对数据库造成破坏,并影响正在类故障会对数据库造成破坏,并影响正在操作的数据库的所有事务。这类故障虽然操作的数据库的所有事务。这类故障虽然发生的可能性很小,但破坏性很大。发生的可能性很小,但破坏性很大。o计算机病毒计算机病毒的破坏性很大,而且极易传播,的破坏性很大,而且极易传播,它也可以对数据库造成毁灭性的破坏。它也可以对数据库造成毁灭性的破坏。*14故障对数据库的影响故障对数据库的影响o有两种可能性:有两种可能性:n一种是数据库本身的破坏;一种是数据库本身的破坏;n另一种是数据库没有破坏,但数据可能不正确另一种是数据库没有破坏,但数据可能不正确(因事务非正常终止)。(因事务非正常终止)。o数据库恢复就是保证数据库的正确和一致,数据库恢复就是保证数据库的正确和一致,其原理是:其原理是:冗余冗余。n即数据库中任何一部分被破坏的或不正确的数即数据库中任何一部分被破坏的或不正确的数据均可根据冗余数据来重建。据均可根据冗余数据来重建。o恢复的原理很简单,但实现的技术细节却很复杂恢复的原理很简单,但实现的技术细节却很复杂*1513.3 13.3 数据库恢复的类型数据库恢复的类型o无论出现何种类型的故障,都必须终无论出现何种类型的故障,都必须终止或提交事务,以维护数据完整性。止或提交事务,以维护数据完整性。o事务的恢复事务的恢复类型:类型:n向前恢复。向前恢复。n向后恢复。向后恢复。o介质故障恢复介质故障恢复。*1613.3.1 13.3.1 向前恢复向前恢复o也称为也称为重做重做(REDOREDO)o用于物理损坏情形的恢复过程用于物理损坏情形的恢复过程。如:如:n磁盘损坏磁盘损坏n向数据库缓冲区写入数据时的故障向数据库缓冲区写入数据时的故障n将缓冲区中的信息传输到磁盘时出现的将缓冲区中的信息传输到磁盘时出现的故障故障*17永久生效的更新永久生效的更新o事务的中间结果被写入到数据库缓冲区事务的中间结果被写入到数据库缓冲区中,数据在缓冲区和数据库的物理存储中,数据在缓冲区和数据库的物理存储之间进行传输。之间进行传输。o当缓冲区的数据被传输到物理存储器后,当缓冲区的数据被传输到物理存储器后,更新操作才是永久性的。更新操作才是永久性的。*18缓冲区缓冲区重做事务重做事务o如果在写入缓冲区和传输缓冲数据到物理如果在写入缓冲区和传输缓冲数据到物理存储器过程中发生故障,则恢复管理器必存储器过程中发生故障,则恢复管理器必须确定故障发生时执行须确定故障发生时执行WRITEWRITE操作的事务操作的事务的状态的状态:n如果事务已经执行了如果事务已经执行了COMMITCOMMIT语句,则恢复管语句,则恢复管理器将理器将重做重做(也称为前滚)事务的操作(也称为前滚)事务的操作并并将将事务的更新结果保存到数据库中。事务的更新结果保存到数据库中。o向前恢复保证了事务的持久性。向前恢复保证了事务的持久性。*19向前恢复过程向前恢复过程o首先读取最新的数据库转储和修改数据的首先读取最新的数据库转储和修改数据的事务日志。事务日志。o然后读取日志记录,从数据库转储之后的然后读取日志记录,从数据库转储之后的第一个记录开始,一直读到物理损坏前的第一个记录开始,一直读到物理损坏前的最后一次记录。最后一次记录。(从后向前读从后向前读)o对于每一条日志记录,把数据库转储中相对于每一条日志记录,把数据库转储中相关的数据值修改为日志记录中修改后的值,关的数据值修改为日志记录中修改后的值,使数据库中的值是事务执行完成后的最终使数据库中的值是事务执行完成后的最终结果。结果。*20重做示意图重做示意图*2113.3.2 13.3.2 向后恢复向后恢复o向后恢复向后恢复(也称为撤销,(也称为撤销,UNDOUNDO)用于)用于数据库正常操作过程中发生错误时的数据库正常操作过程中发生错误时的恢复过程。恢复过程。o这种错误可能是人为键入的数据,或这种错误可能是人为键入的数据,或是程序异常结束而留下的未完成的数是程序异常结束而留下的未完成的数据库修改。据库修改。*22向后恢复(续)向后恢复(续)o如果在故障发生时事务尚未提交,则如果在故障发生时事务尚未提交,则将导致数据库的不一致性。将导致数据库的不一致性。o因此恢复管理器必须撤销(回滚)事因此恢复管理器必须撤销(回滚)事务对数据库的所有影响。务对数据库的所有影响。o向后恢复保证了事务的原子性。向后恢复保证了事务的原子性。*23向后恢复过程向后恢复过程o从数据库的当前状态和事务日志的最从数据库的当前状态和事务日志的最后一条记录开始,按后一条记录开始,按从前向后从前向后的顺序的顺序读取日志,读取日志,o将数据库中已更新的数据值改为记录将数据库中已更新的数据值改为记录在日志中的更新前的值(前像),直在日志中的更新前的值(前像),直至错误发生点。至错误发生点。*24回滚示意图回滚示意图*25示例示例1 1*26撤销撤销撤销撤销重做重做重做重做重做重做重做重做示例示例2 2有有事务操作历史及相应的日志记录事务操作历史及相应的日志记录:时间事事务操作操作日志日志记录说明明时刻刻1R1(A,50)(S,1)启启动事事务T1的的日日志志记录,无无需需在在日日志志中中记录读操操作作,但但这个操作表示事个操作表示事务T1的开始的开始时刻刻2W1(A,20)(W,1,A,50,20)将将事事务T1修修改改A的的操操作作记入入日日志志。A修修改改前前的的值是是50,修改后的,修改后的值是是20时刻刻3R2(C,100)(S,2)启启动事事务T2的日志的日志记录时刻刻4W2(C,50)(W,2,C,100,50)将将事事务T2修修改改C的的操操作作记入入日日志志。C修修改改前前的的值是是100,修改后的,修改后的值是是50时刻刻5C2(C,2)提交提交T2(将日志(将日志缓冲区中的信息写入日志文件)冲区中的信息写入日志文件)时刻刻6R1(B,50)没有日志没有日志项时刻刻7W1(B,80)(W,1,B,50,80)将将事事务T1修修改改B的的操操作作记入入日日志志。B修修改改前前的的值是是50,修改后的,修改后的值是是80时刻刻8C1 (C,1)提交提交T1(将日志(将日志缓冲区中的信息写入日志文件)冲区中的信息写入日志文件)恢复完成之后恢复完成之后:A=50A=50,B=50B=50,C=50C=50系统崩溃系统崩溃X故障恢复过程故障恢复过程o在发生故障的系统被重启后,数据库的在发生故障的系统被重启后,数据库的恢复经历了两个阶段:恢复经历了两个阶段:n撤销撤销:按逆向顺序读取日志文件中的记按逆向顺序读取日志文件中的记录直至第一条记录;录直至第一条记录;n重做重做:顺序向前读取日志文件中的记录顺序向前读取日志文件中的记录直到最后一条记录。直到最后一条记录。o大多数商业大多数商业DBMSDBMS都是都是先进行撤销先进行撤销,再进再进行重做行重做。*28在在W W1 1(B,80)(B,80)之后之后发生故障的事务操作撤销过程发生故障的事务操作撤销过程*29序号序号日志日志记录完成的撤完成的撤销操作操作1(C,2)将事将事务T2放入事放入事务提交列表提交列表2(W,2,C,100,50)由于事由于事务T2在提交列表,因此不在提交列表,因此不进行任何操作行任何操作3(S,2)记录事事务T2不再活不再活动4(W,1,A,50,20)事事务T1还未未提提交交。最最后后一一部部是是写写操操作作,因因此此系系统执行行撤撤销操操作作,把把A改改为修修改改前前的的值(50)。将将事事务T1放放入入未提交事未提交事务列表列表5(S,1)到到达达事事务T1的的开开始始点点,现在在没没有有可可撤撤销的的活活动了了,因因此撤此撤销阶段段结束束在在W W1 1(B,80)(B,80)之后之后发生故障的事务操作发生故障的事务操作重做重做过程过程*30序号序号日志日志记录重做操作重做操作6(S,1)无无动作作7(W,1,A,50,20)事事务T1未提交,无未提交,无动作作8(S,2)无无动作作9(W,2,C,100,50)由由于于事事务T2已已提提交交,因因此此重重做做该修修改改,即即把把C的的值改改为5010(C,2)无无动作,恢复作,恢复结束束13.3.3 13.3.3 介质故障恢复介质故障恢复o当发生介质故障时,磁盘上的物理数当发生介质故障时,磁盘上的物理数据和日志文件均遭到破坏,这是破坏据和日志文件均遭到破坏,这是破坏最严重的一种故障。最严重的一种故障。o要从介质故障中恢复数据库,必须在要从介质故障中恢复数据库,必须在故障前对数据库进行定期转储。故障前对数据库进行定期转储。o在介质正常后,再利用在介质正常后,再利用转储恢复数据转储恢复数据库库。*3113.4 13.4 恢复技术恢复技术o恢复技术依赖于数据库损坏的类型和恢复技术依赖于数据库损坏的类型和程度。程度。o基本原则是事务的所有操作必须作为基本原则是事务的所有操作必须作为一个逻辑工作单元来对待,并且要保一个逻辑工作单元来对待,并且要保证数据库的一致性。证数据库的一致性。o数据库损坏数据库损坏的的类型:类型:n物理损坏物理损坏n非物理或非物理或事务故障事务故障*32物理损坏物理损坏o需要利用数据库的最新转储进行恢复。需要利用数据库的最新转储进行恢复。o如果事务日志文件没有损坏,还可利用如果事务日志文件没有损坏,还可利用事务日志重新执行已提交事务的更新操事务日志重新执行已提交事务的更新操作。作。*33事务故障事务故障o需要需要撤销撤销(回滚)引起不一致的修改。(回滚)引起不一致的修改。o为确保更新已到达物理存储设备,有必为确保更新已到达物理存储设备,有必要要重做重做(前滚)一些事务。(前滚)一些事务。o通过使用事务日志文件中更新前的值通过使用事务日志文件中更新前的值(前像前像)和更新后的值()和更新后的值(后像后像),使数),使数据库恢复到一致性状态。这种技术也称据库恢复到一致性状态。这种技术也称为为基于日志的恢复技术基于日志的恢复技术。有两种:有两种:n延迟更新延迟更新n立即更新立即更新*3413.4.1 13.4.1 延迟更新技术延迟更新技术o只有到达事务的提交点,更新才被写只有到达事务的提交点,更新才被写入数据库。入数据库。o即:即:数据库的更新要延迟到事务执行数据库的更新要延迟到事务执行成功并提交时。成功并提交时。o在事务执行过程中,更新只被记录在在事务执行过程中,更新只被记录在事务日志和缓冲区中。当事务提交后,事务日志和缓冲区中。当事务提交后,更新被记录到数据库。更新被记录到数据库。*35延迟更新技术延迟更新技术(续)(续)o如果一个事务在到达提交点之前出现如果一个事务在到达提交点之前出现故障,将不会修改数据库,因此没必故障,将不会修改数据库,因此没必要进行撤销操作。要进行撤销操作。o但如果发生故障时但如果发生故障时事务的更新还未写事务的更新还未写入到数据库入到数据库,则必须,则必须重做已提交事务重做已提交事务的更新。的更新。*36延迟更新技术延迟更新技术的日志内容的日志内容o当事务当事务T T启动启动时,将时,将“事务开始事务开始”(或(或T,BEGIN)记录写入事务日志文件。)记录写入事务日志文件。o在事务在事务T T执行执行期间,写入一条包含所有之前指定期间,写入一条包含所有之前指定的日志数据的日志记录,例如的日志数据的日志记录,例如,为属性为属性A A赋新值赋新值aiai,则用,则用WRITE(A,)表示。表示。o当事务当事务T T的所有活动都的所有活动都成功提交成功提交时,将记录时,将记录T,COMMIT写入事务日志,并将该事务的所有日志写入事务日志,并将该事务的所有日志记录写到磁盘上,然后提交该事务。记录写到磁盘上,然后提交该事务。o如果事务如果事务T T被被撤销撤销了,则忽略该事务的事务日志,了,则忽略该事务的事务日志,并且不执行写操作。并且不执行写操作。*37注意注意o是在事务真正提交之前将日志记录写到磁盘是在事务真正提交之前将日志记录写到磁盘o因此,如果在数据库的真正更新过程中发生因此,如果在数据库的真正更新过程中发生了故障,日志记录不会受损。了故障,日志记录不会受损。o当故障发生时,检查日志文件,找到故障发当故障发生时,检查日志文件,找到故障发生时正在执行的所有事务。从日志文件的最生时正在执行的所有事务。从日志文件的最后一个入口开始,回滚到最近的一个后一个入口开始,回滚到最近的一个检查点检查点(13.4.413.4.4介绍)记录介绍)记录。*38恢复过程恢复过程o所有出现了所有出现了事务开始和事务提交事务开始和事务提交日志记录的日志记录的事务必须被重做。事务必须被重做。o重做的顺序是日志记录被写入日志的顺序。重做的顺序是日志记录被写入日志的顺序。o如果在故障发生前已经执行了写操作,由于如果在故障发生前已经执行了写操作,由于该写操作对数据项没有影响,因此即使再次该写操作对数据项没有影响,因此即使再次写该数据也不会有问题。写该数据也不会有问题。o这种方法保证了一定会更新所有在故障发生这种方法保证了一定会更新所有在故障发生前没有被正确更新的数据项前没有被正确更新的数据项。*39恢复过程(续)恢复过程(续)o对所有出现了对所有出现了事务开始和事务撤销事务开始和事务撤销的的日志记录的事务,不进行特别的操作,日志记录的事务,不进行特别的操作,因为它们实际上并没有写数据库因为它们实际上并没有写数据库。o如果在恢复过程中又发生了系统崩溃,如果在恢复过程中又发生了系统崩溃,则可以再次使用日志记录来恢复数据则可以再次使用日志记录来恢复数据库。库。*40转账示例转账示例o账户账户A A转账给账户转账给账户B 2000B 2000元,假设账户元,假设账户A A现现余额余额1000010000元,账户元,账户B B现现余额余额30003000元元。o转账转账事务事务T T的的正常执行正常执行过程过程:*41时间时间事务步骤事务步骤动作动作时刻时刻1READ(A,a1)读取账户读取账户A的当前余额的当前余额时刻时刻2a1=a1-2000将账户将账户A的余额减去的余额减去2000时刻时刻3WRITE(A,a1)将新的余额写入到账户表中将新的余额写入到账户表中时刻时刻4READ(B,b1)读取账户读取账户B的当前余额的当前余额时刻时刻5b1=b1+2000将账户将账户B的余额加上的余额加上2000时刻时刻6WRITE(B,b1)将新的余额写入到账户表中将新的余额写入到账户表中立即更新立即更新转账示例(续)转账示例(续)o转账转账事务事务T T的延时更新日志记录的延时更新日志记录*42时间时间日志记录日志记录数据库存储的值数据库存储的值事务开始之前事务开始之前A=10000B=3000时刻时刻1时刻时刻2时刻时刻3时刻时刻4事务执行之后事务执行之后A=8000B=5000转账示例(续)转账示例(续)o在在记录被写入事务日志之后、更新记录被写入事务日志之后、更新记录被写入数据库之前发生故障时,记录被写入数据库之前发生故障时,事务事务T T的延的延时更新日志记录时更新日志记录:*43时间时间日志记录日志记录数据库存储的值数据库存储的值事务开始之前事务开始之前A=10000B=3000时刻时刻1时刻时刻2时刻时刻3时刻时刻4当系统进行恢复时,重做事务当系统进行恢复时,重做事务T T的操作,的操作,账户账户A A和和B B的新值的新值80008000和和50005000被写入到数据库中。被写入到数据库中。转账示例(续)转账示例(续)o在在WRITEWRITE(B B,b b1 1)操作执行之前发生故障的事务)操作执行之前发生故障的事务日志。日志。事务事务T T的延时更新日志记录的延时更新日志记录:*44时间时间日志记录日志记录数据库存储的值数据库存储的值事务开始之前事务开始之前A=10000B=3000时刻时刻1时刻时刻2时刻时刻3当系统进行恢复时,无需执行任何操作。当系统进行恢复时,无需执行任何操作。数据库中账户数据库中账户A A和和B B的值仍为的值仍为1000010000和和30003000。13.4.2 13.4.2 立即更新技术立即更新技术o更新一旦发生即被施加到数据库中,更新一旦发生即被施加到数据库中,而无需等到事务提交点以及所有的更而无需等到事务提交点以及所有的更改被保存在事务日志时。改被保存在事务日志时。o除了需要重做故障之前已提交的事务除了需要重做故障之前已提交的事务所做的更改外,还需要撤销当故障发所做的更改外,还需要撤销当故障发生时仍未提交的事务所造成的影响。生时仍未提交的事务所造成的影响。*45立即更新技术的日志内容立即更新技术的日志内容o当事务当事务T T开始开始时,时,“事务开始事务开始”(或(或)被写)被写入事务日志文件。入事务日志文件。o当执行当执行写操作写操作时,向日志文件中写入一条包含必要数时,向日志文件中写入一条包含必要数据的记录。据的记录。o一旦写入了事务日志记录,就对数据库缓冲区进行写一旦写入了事务日志记录,就对数据库缓冲区进行写更新更新。o当缓冲区数据被转入辅存时,写入对数据库的更新当缓冲区数据被转入辅存时,写入对数据库的更新o读数据库自身的更新在缓冲区下一次被刷新到辅存时读数据库自身的更新在缓冲区下一次被刷新到辅存时进行进行。o当事务当事务T T提交提交时,时,“事务提交事务提交”()记录)记录被写入事务日志。被写入事务日志。*46说明说明o日志记录是在对应的写操作施加到数据日志记录是在对应的写操作施加到数据库之前被写入的,这称为库之前被写入的,这称为“先写日志协先写日志协议议”。o通过使用先写日志协议,恢复管理器可通过使用先写日志协议,恢复管理器可以大胆假设,如果在日志文件中不存在以大胆假设,如果在日志文件中不存在某个事务的提交记录,则该事务在故障某个事务的提交记录,则该事务在故障发生时一定处于活动状态,因此必须被发生时一定处于活动状态,因此必须被撤销。撤销。*47说明说明o如果事务被撤销,则可利用日志撤销事务如果事务被撤销,则可利用日志撤销事务所做的修改,因为日志中包含了所有被更所做的修改,因为日志中包含了所有被更新字段的原始值(新字段的原始值(前像前像)。)。o由于一个事务可能对一个数据项进行过多由于一个事务可能对一个数据项进行过多次更改,因此对写的撤销应按次更改,因此对写的撤销应按逆序逆序进行。进行。o无论事务的写操作是否被施加到了数据库,无论事务的写操作是否被施加到了数据库,写入数据项的前像保证了数据库被恢复到写入数据项的前像保证了数据库被恢复到事务开始前的状态。事务开始前的状态。*48恢复过程恢复过程o对于任何对于任何在日志中同时有在日志中同时有“事务开始事务开始”和和“事事务提交务提交”记录的事务,用日志记录来记录的事务,用日志记录来重做重做,按,按日志记录的方式写入更新字段的日志记录的方式写入更新字段的后像值后像值。o对于任何对于任何在日志中只有在日志中只有“事务开始事务开始”记录而记录而没没有有“事务提交事务提交”记录的事务,必须记录的事务,必须撤销撤销它。这它。这里使用日志记录得到被修改字段的里使用日志记录得到被修改字段的前像值前像值,并,并将前像值写入数据库,从而将数据库恢复到事将前像值写入数据库,从而将数据库恢复到事务开始之前的状态。撤销操作按它们被写入日务开始之前的状态。撤销操作按它们被写入日志的逆序进行。志的逆序进行。*49立即更新日志示例立即更新日志示例o转账转账事务事务T T的立即更新日志记录的立即更新日志记录:*50时间时间日志记录日志记录数据库存储的值数据库存储的值事务开始之前事务开始之前A=10000B=3000时刻时刻1时刻时刻2时刻时刻3A=8000时刻时刻4时刻时刻5B=5000时刻时刻6转账事务转账事务立即更新示例(续)立即更新示例(续)o写操作写操作WRITE(B,bWRITE(B,b1 1)执行之前发生故障时执行之前发生故障时的事务日志的事务日志:*51时间时间日志记录日志记录数据库存储的值数据库存储的值事务开始之前事务开始之前A=10000B=3000时刻时刻1时刻时刻2时刻时刻3A=8000事务事务T T必须被撤销,因此执行必须被撤销,因此执行UNDO(T)UNDO(T)操作,使操作,使A A的值恢复的值恢复为为1000010000,且事务,且事务T T需要重新开始。需要重新开始。立即更新示例(续)立即更新示例(续)o当当被写入事务日志之后,但新值被被写入事务日志之后,但新值被写入数据库之前发生故障时的事务日志写入数据库之前发生故障时的事务日志:时间时间日志记录日志记录数据库存储的值数据库存储的值事务开始之前事务开始之前A=10000B=3000时刻时刻1时刻时刻2时刻时刻3A=8000时刻时刻4时刻时刻5B=5000时刻时刻6当系统恢复时,执行当系统恢复时,执行REDO(T)REDO(T)操作,操作,A A和和B B的值分别为的值分别为80008000和和50005000。13.4.3 13.4.3 镜像页技术镜像页技术o在镜像页模式中,数据库被认为是由固定在镜像页模式中,数据库被认为是由固定大小的磁盘大小的磁盘分区分区的逻辑存储单元组成。的逻辑存储单元组成。o通过页表将页映射到物理通过页表将页映射到物理磁盘分区磁盘分区,数据,数据库中的每个逻辑页对应页表中的一条记录。库中的每个逻辑页对应页表中的一条记录。每条记录包含页所存储的物理存储的分区每条记录包含页所存储的物理存储的分区号。号。o在单用户环境下,镜像页技术不需要使用在单用户环境下,镜像页技术不需要使用事务日志,在多用户环境下可能需要事务事务日志,在多用户环境下可能需要事务日志来支持并发控制日志来支持并发控制。*53镜像页技术镜像页技术(续续)o镜像页方法在事务的生存期内,维护两个镜像页方法在事务的生存期内,维护两个页表,页表,:当前页表当前页表、镜像页表镜像页表。o当事务刚当事务刚启动启动时,两个页表是一样的。此时,两个页表是一样的。此后,镜像页表不再改变,并在系统故障时后,镜像页表不再改变,并在系统故障时用于恢复数据库。用于恢复数据库。o在事务在事务执行执行过程中,当前页表被用于记录过程中,当前页表被用于记录对数据库的所有更新。对数据库的所有更新。o但事务但事务结束结束时,当前页表转变成镜像页表。时,当前页表转变成镜像页表。*54镜像页模式镜像页模式*55说明说明o被事务影响的页被复制到新的物理存储区被事务影响的页被复制到新的物理存储区中,通过当前页表,这些分区和那些没有中,通过当前页表,这些分区和那些没有被修改的分区是事务可以访问的。被修改的分区是事务可以访问的。o被更改的页的老版本保持不变,通过镜像被更改的页的老版本保持不变,通过镜像页表事务仍然可以访问这些页。页表事务仍然可以访问这些页。o镜像页表包含事务开始之前页表中存在的镜像页表包含事务开始之前页表中存在的记录以及从未被事务修改的分区记录。记录以及从未被事务修改的分区记录。o镜像页表在事务发生时保持不变,用于撤镜像页表在事务发生时保持不变,用于撤销事务时使用。销事务时使用。*56镜像页技术优缺点镜像页技术优缺点o优点优点:消除了维护事务日志文件的开消除了维护事务日志文件的开销,而且,由于不需要对操作进行撤销,而且,由于不需要对操作进行撤销或重做,因此恢复速度非常快。销或重做,因此恢复速度非常快。o缺点缺点:数据碎片或分散,需要定期进数据碎片或分散,需要定期进行垃圾收集以回收不能访问的分区。行垃圾收集以回收不能访问的分区。*5713.4.4 13.4.4 检查点技术检查点技术o在利用日志进行数据库恢复时,一般需在利用日志进行数据库恢复时,一般需要检查所有的日志记录。这有两个问题要检查所有的日志记录。这有两个问题:n搜索整个日志将耗费大量的时间,搜索整个日志将耗费大量的时间,n很多需要重做的事务实际上可能已经将很多需要重做的事务实际上可能已经将它们的更新结果写到了数据库中,而恢它们的更新结果写到了数据库中,而恢复子系统又重新执行这些操作,同样浪复子系统又重新执行这些操作,同样浪费了大量时间。费了大量时间。*58检查点技术检查点技术o为解决为解决上述上述问题,发展了具有检查点的恢问题,发展了具有检查点的恢复技术。复技术。o这种技术在日志文件中增加两个新的记录这种技术在日志文件中增加两个新的记录n检查点记录检查点记录n重新开始记录重新开始记录o检查点记录的内容包括:检查点记录的内容包括:n建立检查点时刻所有正在执行的事务列表;建立检查点时刻所有正在执行的事务列表;n这些事务最近一个日志记录的地址。这些事务最近一个日志记录的地址。*59o重新开始文件用于记录各个检查点记录在重新开始文件用于记录各个检查点记录在日志文件中的地址。日志文件中的地址。图示为图示为建立检查点建立检查点C Ci i时对应的日志文件和重新开始文件。时对应的日志文件和重新开始文件。动态维护日志文件的方法动态维护日志文件的方法o周期性地执行建立检查点和保存数据库状态的周期性地执行建立检查点和保存数据库状态的操作。具体步骤:操作。具体步骤:将日志缓冲区中的所有日志记录写到磁盘日志将日志缓冲区中的所有日志记录写到磁盘日志文件上。文件上。在日志文件中写入一个检查点记录,该记录包在日志文件中写入一个检查点记录,该记录包含所有在检查点运行的事务的标识。含所有在检查点运行的事务的标识。将数据缓冲区将数据缓冲区中中所有修改过的数据写入到磁盘所有修改过的数据写入到磁盘数据库中。数据库中。将检查点记录在日志文件中的地址写入一个重将检查点记录在日志文件中的地址写入一个重新开始文件,以便在发生系统故障而重启时可新开始文件,以便在发生系统故障而重启时可利用该文件找到日志文件中的检查点记录地址利用该文件找到日志文件中的检查点记录地址*61关于检查点关于检查点o检查点可以按照预订的时间间隔建立,检查点可以按照预订的时间间隔建立,如如:n每隔每隔固定时间建立一个检查点,比如固定时间建立一个检查点,比如1515分钟、分钟、3030分钟分钟o也可以按照某种规则建立检查点,如也可以按照某种规则建立检查点,如:n日志文件写满一半日志文件写满一半时时建立一个检查点建立一个检查点*62检查点优点检查点优点o可以改善恢复效率。可以改善恢复效率。o如果事务如果事务T T在某个检查点之前提交,则在某个检查点之前提交,则T T对数据库所做的修改均已写入数据库对数据库所做的修改均已写入数据库中中,o因此,因此,在进行恢复时,没有必要对事务在进行恢复时,没有必要对事务T T执行重做操作。执行重做操作。*63示例示例*64当系统在当系统在t tf f时刻发生故障时,只需扫描事务日时刻发生故障时,只需扫描事务日志至最近的一个检查点志至最近的一个检查点t tc c无操作无操作重做重做重做重做撤销撤销13.5 13.5 缓冲区管理缓冲区管理o对数据库缓冲区的管理,在恢复过程中起对数据库缓冲区的管理,在恢复过程中起着重要的作用。着重要的作用。o缓冲区管理器缓冲区管理器负责对在主存和辅存间传送负责对在主存和辅存间传送数据页的数据库缓冲区进行高效的管理,数据页的数据库缓冲区进行高效的管理,包括从磁盘读页到缓冲区直到缓冲区满,包括从磁盘读页到缓冲区直到缓冲区满,然后使用一种替代策略来决定将哪个或哪然后使用一种替代策略来决定将哪个或哪些缓冲区的数据强制写到磁盘,以此来为些缓冲区的数据强制写到磁盘,以此来为从磁盘上读取的新页的操作提供空间。从磁盘上读取的新页的操作提供空间。*65缓冲区管理缓冲区管理(续)(续)o缓冲区管理器使用的替代策略有缓冲区管理器使用的替代策略有:n先进先出(先进先出(FIFOFIFO)n最近最少使用最近最少使用(LRULRU)。o当某页已经在数据库缓冲区时,缓冲当某页已经在数据库缓冲区时,缓冲管理器不会再从磁盘上读取该页。管理器不会再从磁盘上读取该页。*66DBMSDBMS虚拟内存缓冲区虚拟内存缓冲区示意示意*67缓冲区缓冲区作用作用o缓冲区缓冲区管理器有效地提供了数据库页管理器有效地提供了数据库页的临时副本。因此,的临时副本。因此,可可被应用到数据被应用到数据库恢复系统中库恢复系统中。o在这种模式中,修改是在临时副本中在这种模式中,修改是在临时副本中完成的,原始的页仍然保留在辅存中完成的,原始的页仍然保留在辅存中不被修改。事务日志和数据页都被写不被修改。事务日志和数据页都被写入到虚拟内存中的缓冲区页中。入到虚拟内存中的缓冲区页中。*68二阶段提交二阶段提交o事务的事务的COMMITCOMMIT操作分两个阶段完成,因操作分两个阶段完成,因此又被称为此又被称为二阶段提交二阶段提交。n在第一个阶段,事务日志缓冲区被写出在第一个阶段,事务日志缓冲区被写出(先写日志)。(先写日志)。n在第二个阶段,数据缓冲区被写出。在第二个阶段,数据缓冲区被写出。*69日志日志日志日志说明说明o由于日志总是在由于日志总是在COMMITCOMMIT操作的第一阶操作的第一阶段强制写出,因此它不会引起任何问段强制写出,因此它不会引起任何问题。题。o由于数据库中没有未提交的修改,因由于数据库中没有未提交的修改,因此这种数据库恢复方法不需要撤销事此这种数据库恢复方法不需要撤销事务日志。务日志。*70
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!