![第13章 数据库 数据库恢复技术_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/30735309-e356-4121-88b8-e371146693f6/30735309-e356-4121-88b8-e371146693f61.gif)
![第13章 数据库 数据库恢复技术_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/30735309-e356-4121-88b8-e371146693f6/30735309-e356-4121-88b8-e371146693f62.gif)
![第13章 数据库 数据库恢复技术_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/30735309-e356-4121-88b8-e371146693f6/30735309-e356-4121-88b8-e371146693f63.gif)
![第13章 数据库 数据库恢复技术_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/30735309-e356-4121-88b8-e371146693f6/30735309-e356-4121-88b8-e371146693f64.gif)
![第13章 数据库 数据库恢复技术_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/30735309-e356-4121-88b8-e371146693f6/30735309-e356-4121-88b8-e371146693f65.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第1313章章 数据库恢复技术数据库恢复技术o13.1 13.1 恢复的基本概念恢复的基本概念o13.2 13.2 数据库故障的种类数据库故障的种类o13.3 13.3 数据库恢复的类型数据库恢复的类型o13.4 13.4 恢复技术恢复技术o13.5 13.5 缓冲区管理缓冲区管理2022年3月29日11时01分1概述概述o计算机同其他任何设备一样,都有可计算机同其他任何设备一样,都有可能发生故障。能发生故障。o这这种种情况一旦发生,就有可能造成数情况一旦发生,就有可能造成数据丢失。据丢失。o数据库系统必须采取必要的措施,以数据库系统必须采取必要的措施,以保证不会或尽可能减少数据丢失。保证不
2、会或尽可能减少数据丢失。o数据库恢复数据库恢复是是DBMSDBMS必须提供的功能必须提供的功能。2022年3月29日11时01分213.113.1恢复的基本概念恢复的基本概念o数据库恢复是指当数据库发生故障时,数据库恢复是指当数据库发生故障时,将数据库恢复到正确(一致性)状态的将数据库恢复到正确(一致性)状态的过程。过程。o数据库恢复是基于事务的原子性特性。数据库恢复是基于事务的原子性特性。o数据库恢复过程通常遵循一个可预测的数据库恢复过程通常遵循一个可预测的方案。方案。o 恢复机制有恢复机制有两个关键问题两个关键问题:如何建立备份:如何建立备份数据;如何利用备份数据进行恢复。数据;如何利用备
3、份数据进行恢复。2022年3月29日11时01分3数据转储数据转储o数据库恢复采用的基本技术数据库恢复采用的基本技术:数据转储数据转储(也称为(也称为数据库备份数据库备份)。)。o转储就是定期地将整个数据库复制到辅转储就是定期地将整个数据库复制到辅助存储设备上,比如磁带、磁盘助存储设备上,比如磁带、磁盘。o数据转储数据转储只能将数据库恢复到转储时的只能将数据库恢复到转储时的状态。如果想恢复到故障发生时的状态状态。如果想恢复到故障发生时的状态,则必须利用转储之后的事务日志,则必须利用转储之后的事务日志。2022年3月29日11时01分4转储分类转储分类o静态转储静态转储n 在系统中无运行事务时进
4、行。在系统中无运行事务时进行。n 在转储期间不允许对数据库进行任何操在转储期间不允许对数据库进行任何操作。作。o动态转储动态转储n 不用等待正在运行的事务结束不用等待正在运行的事务结束。n 在转储在转储期间期间允许运行新的事务允许运行新的事务。2022年3月29日11时01分5静态与动态转储比较静态与动态转储比较o 静态转储静态转储n 实现简单,实现简单,n 静态转储得到的一定是数据库的一个一致性静态转储得到的一定是数据库的一个一致性副本。副本。n 转储期间转储期间但会降低数据库的可用性。但会降低数据库的可用性。o 动态转储动态转储n 不能保证转储结束后的数据库副本是正确的不能保证转储结束后的
5、数据库副本是正确的n 必须利用日志将数据库恢复到一致性状态必须利用日志将数据库恢复到一致性状态n 转储期间转储期间不会降低数据库的可用性不会降低数据库的可用性。2022年3月29日11时01分6转储内容分类转储内容分类o 海量转储海量转储:每次转储全部数据库,每次转储全部数据库,o 增量转储增量转储:每次只转储上一次转储之后修改每次只转储上一次转储之后修改过的数据。过的数据。o 从恢复的角度看,用海量转储的数据库副本从恢复的角度看,用海量转储的数据库副本进行恢复进行恢复更更方便,但如果数据量很大,事务方便,但如果数据量很大,事务处理又比较频繁,则增量转储处理又比较频繁,则增量转储会会更有效。更
6、有效。o 海量转储和增量转储可以是动态的,也可以海量转储和增量转储可以是动态的,也可以是静态的。是静态的。2022年3月29日11时01分713.2 13.2 数据库故障的种类数据库故障的种类o数据库故障是指导致数据库值出现错数据库故障是指导致数据库值出现错误描述状态的情况,误描述状态的情况,o影响数据库运行的故障有多种影响数据库运行的故障有多种:n 事务内部的故障事务内部的故障n 系统故障系统故障n 其它故障其它故障2022年3月29日11时01分8事务内部的故障事务内部的故障o可预期的可预期的n 这这类类故障可通过事务程序本身发现。故障可通过事务程序本身发现。n 如银行转账事务中,如果如银
7、行转账事务中,如果A A账户金额不账户金额不足,则不能进行转账。足,则不能进行转账。o非预期性的非预期性的n 这类这类故障不能由应用程序来处理。故障不能由应用程序来处理。n 如运算溢出或因死锁而被撤销的事务如运算溢出或因死锁而被撤销的事务。2022年3月29日11时01分9事务故障事务故障o事务故障意味着事务没有达到终点,数事务故障意味着事务没有达到终点,数据库可能处于不正确的状态。据库可能处于不正确的状态。o数据库的恢复机制要在不影响其他事务数据库的恢复机制要在不影响其他事务运行的情况下,强行撤销该事务中的全运行的情况下,强行撤销该事务中的全部操作,使该事务就像没发生过一样。部操作,使该事务
8、就像没发生过一样。o这类恢复操作称为这类恢复操作称为事务撤销事务撤销(UNDOUNDO)。)。2022年3月29日11时01分10系统故障系统故障o是指造成系统停止运转、系统要重启是指造成系统停止运转、系统要重启的故障。例如的故障。例如:n 硬件错误(硬件错误(CPUCPU故障)故障)n 操作系统故障操作系统故障n 突然停电等。突然停电等。o这这类类故障会影响正在运行的所有事务故障会影响正在运行的所有事务,但不破坏数据库。,但不破坏数据库。2022年3月29日11时01分11系统故障产生的结果系统故障产生的结果o一些未完成事务的结果可能已经送入物一些未完成事务的结果可能已经送入物理数据库中,从
9、而造成数据库可能处于理数据库中,从而造成数据库可能处于不正确状态;不正确状态;o有些已经提交的事务可能有一部分结果有些已经提交的事务可能有一部分结果还保留在缓冲区中,尚未写到物理数据还保留在缓冲区中,尚未写到物理数据库中,库中,因此因此会丢失这些事务对数据的修会丢失这些事务对数据的修改,使数据库处于不一致状态。改,使数据库处于不一致状态。2022年3月29日11时01分12系统故障恢复方法系统故障恢复方法o恢复子系统在系统重新启动时必须恢复子系统在系统重新启动时必须:n 撤销所有未完成的事务撤销所有未完成的事务n 重做所有已提交的事务重做所有已提交的事务o从而从而保证将数据库恢复到一致状态。保
10、证将数据库恢复到一致状态。2022年3月29日11时01分13其他故障其他故障o 介质故障或由计算机病毒引起的故障或介质故障或由计算机病毒引起的故障或破坏,破坏,均均归为其归为其他他故障。故障。o 介质故障介质故障指外存故障,如磁盘损坏等。指外存故障,如磁盘损坏等。这类故障会对数据库造成破坏,并影响这类故障会对数据库造成破坏,并影响正在操作的数据库的所有事务。这类故正在操作的数据库的所有事务。这类故障虽然发生的可能性很小,但破坏性很障虽然发生的可能性很小,但破坏性很大。大。o 计算机病毒计算机病毒的破坏性很大,而且极易传的破坏性很大,而且极易传播,它也可以对数据库造成毁灭性的破播,它也可以对数
11、据库造成毁灭性的破坏。坏。2022年3月29日11时01分14故障对数据库的影响故障对数据库的影响o 有两种可能性:有两种可能性:n 一种是数据库本身的破坏;一种是数据库本身的破坏;n 另一种是数据库没有破坏,但数据可能不正确另一种是数据库没有破坏,但数据可能不正确(因事务非正常终止)。(因事务非正常终止)。o 数据库恢复就是保证数据库的正确和一致数据库恢复就是保证数据库的正确和一致,其原理是:,其原理是:冗余冗余。n 即数据库中任何一部分被破坏的或不正确的数即数据库中任何一部分被破坏的或不正确的数据均可根据冗余数据来重建。据均可根据冗余数据来重建。o 恢复的原理很简单,但实现的技术细节却很复
12、杂恢复的原理很简单,但实现的技术细节却很复杂2022年3月29日11时01分1513.3 13.3 数据库恢复的类型数据库恢复的类型o无论出现何种类型的故障,都必须终无论出现何种类型的故障,都必须终止或提交事务,以维护数据完整性。止或提交事务,以维护数据完整性。o事务的恢复事务的恢复类型:类型:n 向前恢复。向前恢复。n 向后恢复。向后恢复。o介质故障恢复介质故障恢复。2022年3月29日11时01分1613.3.1 13.3.1 向前恢复向前恢复o也称为也称为重做重做(REDOREDO)o用于物理损坏情形的恢复过程用于物理损坏情形的恢复过程。如:如:n 磁盘损坏磁盘损坏n 向数据库缓冲区写入
13、数据时的故障向数据库缓冲区写入数据时的故障n 将缓冲区中的信息传输到磁盘时出现将缓冲区中的信息传输到磁盘时出现的故障的故障2022年3月29日11时01分17永久生效的更新永久生效的更新o事务的中间结果被写入到数据库缓冲区事务的中间结果被写入到数据库缓冲区中,数据在缓冲区和数据库的物理存储中,数据在缓冲区和数据库的物理存储之间进行传输。之间进行传输。o当缓冲区的数据被传输到物理存储器后当缓冲区的数据被传输到物理存储器后,更新操作才是永久性的。,更新操作才是永久性的。2022年3月29日11时01分18缓冲区缓冲区重做事务重做事务o 如果在写入缓冲区和传输缓冲数据到物如果在写入缓冲区和传输缓冲数
14、据到物理存储器过程中发生故障,则恢复管理理存储器过程中发生故障,则恢复管理器必须确定故障发生时执行器必须确定故障发生时执行WRITEWRITE操作的操作的事务的状态事务的状态:n 如果事务已经执行了如果事务已经执行了COMMITCOMMIT语句,则恢复管语句,则恢复管理器将理器将重做重做(也称为前滚)事务的操作(也称为前滚)事务的操作并并将将事务的更新结果保存到数据库中。事务的更新结果保存到数据库中。o 向前恢复保证了事务的持久性。向前恢复保证了事务的持久性。2022年3月29日11时01分19向前恢复过程向前恢复过程o 首先读取最新的数据库转储和修改数据首先读取最新的数据库转储和修改数据的事
15、务日志。的事务日志。o 然后读取日志记录,从数据库转储之后然后读取日志记录,从数据库转储之后的第一个记录开始,一直读到物理损坏的第一个记录开始,一直读到物理损坏前的最后一次记录。前的最后一次记录。(从后向前读从后向前读)o 对于每一条日志记录,把数据库转储中对于每一条日志记录,把数据库转储中相关的数据值修改为日志记录中修改后相关的数据值修改为日志记录中修改后的值,使数据库中的值是事务执行完成的值,使数据库中的值是事务执行完成后的最终结果。后的最终结果。2022年3月29日11时01分20重做示意图重做示意图2022年3月29日11时01分2113.3.2 13.3.2 向后恢复向后恢复o向后恢
16、复向后恢复(也称为撤销,(也称为撤销,UNDOUNDO)用)用于数据库正常操作过程中发生错误时于数据库正常操作过程中发生错误时的恢复过程。的恢复过程。o这种错误可能是人为键入的数据,或这种错误可能是人为键入的数据,或是程序异常结束而留下的未完成的数是程序异常结束而留下的未完成的数据库修改。据库修改。2022年3月29日11时01分22向后恢复(续)向后恢复(续)o如果在故障发生时事务尚未提交,则如果在故障发生时事务尚未提交,则将导致数据库的不一致性。将导致数据库的不一致性。o因此恢复管理器必须撤销(回滚)事因此恢复管理器必须撤销(回滚)事务对数据库的所有影响。务对数据库的所有影响。o向后恢复保
17、证了事务的原子性。向后恢复保证了事务的原子性。2022年3月29日11时01分23向后恢复过程向后恢复过程o从数据库的当前状态和事务日志的最从数据库的当前状态和事务日志的最后一条记录开始,按后一条记录开始,按从前向后从前向后的顺序的顺序读取日志,读取日志,o将数据库中已更新的数据值改为记录将数据库中已更新的数据值改为记录在日志中的更新前的值(前像),直在日志中的更新前的值(前像),直至错误发生点。至错误发生点。2022年3月29日11时01分24回滚示意图回滚示意图2022年3月29日11时01分25示例示例1 12022年3月29日11时01分26撤销撤销撤销撤销重做重做重做重做重做重做重做
18、重做示例示例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, 5
19、0)(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(将日志缓冲区中的信息写入日志文件)(将日志缓冲区中的信息
20、写入日志文件)恢复完成之后恢复完成之后:A=50A=50,B=50B=50,C=50C=50系统崩溃系统崩溃X故障恢复过程故障恢复过程o在发生故障的系统被重启后,数据库在发生故障的系统被重启后,数据库的恢复经历了两个阶段:的恢复经历了两个阶段:n 撤销撤销:按逆向顺序读取日志文件中的按逆向顺序读取日志文件中的记录直至第一条记录;记录直至第一条记录;n 重做重做:顺序向前读取日志文件中的记顺序向前读取日志文件中的记录直到最后一条记录。录直到最后一条记录。o大多数商业大多数商业DBMSDBMS都是都是先进行撤销先进行撤销,再再进行重做进行重做。2022年3月29日11时01分28在在W W1 1(
21、B,80)(B,80)之后之后发生故障的事务操作撤销过程发生故障的事务操作撤销过程2022年3月29日11时01分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)。将事
22、务)。将事务T1放入放入未提交事务列表未提交事务列表5(S, 1)到达事务到达事务T1的开始点,现在没有可撤销的活动了,因的开始点,现在没有可撤销的活动了,因此撤销阶段结束此撤销阶段结束在在W W1 1(B,80)(B,80)之后之后发生故障的事务操作发生故障的事务操作重做重做过过程程2022年3月29日11时01分30序号序号日志记录日志记录重做操作重做操作6(S, 1)无动作无动作7(W, 1, A, 50, 20)事务事务T1未提交,无动作未提交,无动作8(S, 2)无动作无动作9(W, 2, C, 100, 50)由于事务由于事务T2已提交,因此重做该修改,即把已提交,因此重做该修改,
23、即把C的的值改为值改为5010(C, 2)无动作,恢复结束无动作,恢复结束13.3.3 13.3.3 介质故障恢复介质故障恢复o当发生介质故障时,磁盘上的物理数当发生介质故障时,磁盘上的物理数据和日志文件均遭到破坏,这是破坏据和日志文件均遭到破坏,这是破坏最严重的一种故障。最严重的一种故障。o要从介质故障中恢复数据库,必须在要从介质故障中恢复数据库,必须在故障前对数据库进行定期转储。故障前对数据库进行定期转储。o在介质正常后,再利用在介质正常后,再利用转储恢复数据转储恢复数据库库。2022年3月29日11时01分3113.4 13.4 恢复技术恢复技术o恢复技术依赖于数据库损坏的类型和恢复技术
24、依赖于数据库损坏的类型和程度。程度。o基本原则是事务的所有操作必须作为基本原则是事务的所有操作必须作为一个逻辑工作单元来对待,并且要保一个逻辑工作单元来对待,并且要保证数据库的一致性。证数据库的一致性。o数据库损坏数据库损坏的的类型:类型:n 物理损坏物理损坏n 非物理或非物理或事务故障事务故障2022年3月29日11时01分32物理损坏物理损坏o需要利用数据库的最新转储进行恢复。需要利用数据库的最新转储进行恢复。o如果事务日志文件没有损坏,还可利用如果事务日志文件没有损坏,还可利用事务日志重新执行已提交事务的更新操事务日志重新执行已提交事务的更新操作。作。2022年3月29日11时01分33
25、事务故障事务故障o需要需要撤销撤销(回滚)引起不一致的修改。(回滚)引起不一致的修改。o为确保更新已到达物理存储设备,有必为确保更新已到达物理存储设备,有必要要重做重做(前滚)一些事务。(前滚)一些事务。o通过使用事务日志文件中更新前的值(通过使用事务日志文件中更新前的值(前像前像)和更新后的值()和更新后的值(后像后像),使数据),使数据库恢复到一致性状态。这种技术也称为库恢复到一致性状态。这种技术也称为基于日志的恢复技术基于日志的恢复技术。有两种:有两种:n 延迟更新延迟更新n 立即更新立即更新2022年3月29日11时01分3413.4.1 13.4.1 延迟更新技术延迟更新技术o只有到
26、达事务的提交点,更新才被写只有到达事务的提交点,更新才被写入数据库。入数据库。o即:即:数据库的更新要延迟到事务执行数据库的更新要延迟到事务执行成功并提交时。成功并提交时。o在事务执行过程中,更新只被记录在在事务执行过程中,更新只被记录在事务日志和缓冲区中。当事务提交后事务日志和缓冲区中。当事务提交后,更新被记录到数据库。,更新被记录到数据库。2022年3月29日11时01分35延迟更新技术延迟更新技术(续)(续)o如果一个事务在到达提交点之前出现如果一个事务在到达提交点之前出现故障,将不会修改数据库,因此没必故障,将不会修改数据库,因此没必要进行撤销操作。要进行撤销操作。o但如果发生故障时但
27、如果发生故障时事务的更新还未写事务的更新还未写入到数据库入到数据库,则必须,则必须重做已提交事务重做已提交事务的更新。的更新。2022年3月29日11时01分36延迟更新技术延迟更新技术的日志内容的日志内容o 当事务当事务T T启动启动时,将时,将“事务开始事务开始”(或(或T, BEGIN)记录写入事务日志文件。)记录写入事务日志文件。o 在事务在事务T T执行执行期间,写入一条包含所有之前指定期间,写入一条包含所有之前指定的日志数据的日志记录,例如的日志数据的日志记录,例如,为属性为属性A A赋新值赋新值aiai,则用,则用WRITE ( A, )表示。表示。o 当事务当事务T T的所有活
28、动都的所有活动都成功提交成功提交时,将记录时,将记录T, COMMIT写入事务日志,并将该事务的所有日志写入事务日志,并将该事务的所有日志记录写到磁盘上,然后提交该事务。记录写到磁盘上,然后提交该事务。o 如果事务如果事务T T被被撤销撤销了,则忽略该事务的事务日志了,则忽略该事务的事务日志,并且不执行写操作。,并且不执行写操作。2022年3月29日11时01分37注意注意o 是在事务真正提交之前将日志记录写到磁盘是在事务真正提交之前将日志记录写到磁盘o 因此,如果在数据库的真正更新过程中发生因此,如果在数据库的真正更新过程中发生了故障,日志记录不会受损。了故障,日志记录不会受损。o 当故障发
29、生时,检查日志文件,找到故障发当故障发生时,检查日志文件,找到故障发生时正在执行的所有事务。从日志文件的最生时正在执行的所有事务。从日志文件的最后一个入口开始,回滚到最近的一个后一个入口开始,回滚到最近的一个检查点检查点(13.4.413.4.4介绍)记录介绍)记录。2022年3月29日11时01分38恢复过程恢复过程o 所有出现了所有出现了事务开始和事务提交事务开始和事务提交日志记录的日志记录的事务必须被重做。事务必须被重做。o 重做的顺序是日志记录被写入日志的顺序。重做的顺序是日志记录被写入日志的顺序。o 如果在故障发生前已经执行了写操作,由于如果在故障发生前已经执行了写操作,由于该写操作
30、对数据项没有影响,因此即使再次该写操作对数据项没有影响,因此即使再次写该数据也不会有问题。写该数据也不会有问题。o 这种方法保证了一定会更新所有在故障发生这种方法保证了一定会更新所有在故障发生前没有被正确更新的数据项前没有被正确更新的数据项。2022年3月29日11时01分39恢复过程(续)恢复过程(续)o对所有出现了对所有出现了事务开始和事务撤销事务开始和事务撤销的的日志记录的事务,不进行特别的操作日志记录的事务,不进行特别的操作,因为它们实际上并没有写数据库,因为它们实际上并没有写数据库。o如果在恢复过程中又发生了系统崩溃如果在恢复过程中又发生了系统崩溃,则可以再次使用日志记录来恢复数,则
31、可以再次使用日志记录来恢复数据库。据库。2022年3月29日11时01分40转账示例转账示例o 账户账户A A转账给账户转账给账户B 2000B 2000元,假设账户元,假设账户A A现现余额余额1000010000元,账户元,账户B B现现余额余额30003000元元。o 转账转账事务事务T T的的正常执行正常执行过程过程:2022年3月29日11时01分41时间时间事务步骤事务步骤动作动作时刻时刻1READ(A, a1)读取账户读取账户A的当前余额的当前余额时刻时刻2a1 = a1 - 2000将账户将账户A的余额减去的余额减去2000时刻时刻3WRITE(A, a1)将新的余额写入到账户
32、表中将新的余额写入到账户表中时刻时刻4READ(B, b1)读取账户读取账户B的当前余额的当前余额时刻时刻5b1 = b1 + 2000将账户将账户B的余额加上的余额加上2000时刻时刻6WRITE(B, b1)将新的余额写入到账户表中将新的余额写入到账户表中立即更新立即更新转账示例(续)转账示例(续)o 转账转账事务事务T T的延时更新日志记录的延时更新日志记录2022年3月29日11时01分42时间时间日志记录日志记录数据库存储的值数据库存储的值事务开始之前事务开始之前A = 10000B = 3000时刻时刻1时刻时刻2时刻时刻3时刻时刻4事务执行之后事务执行之后A = 8000B =
33、5000转账示例(续)转账示例(续)o 在在记录被写入事务日志之后、更新记录被写入事务日志之后、更新记录被写入数据库之前发生故障时,记录被写入数据库之前发生故障时,事务事务T T的延的延时更新日志记录时更新日志记录:2022年3月29日11时01分43时间时间日志记录日志记录数据库存储的值数据库存储的值事务开始之前事务开始之前A = 10000B = 3000时刻时刻1时刻时刻2时刻时刻3时刻时刻4当系统进行恢复时,重做事务当系统进行恢复时,重做事务T T的操作,的操作,账户账户A A和和B B的新值的新值80008000和和50005000被写入到数据库中。被写入到数据库中。转账示例(续)转
34、账示例(续)o 在在WRITEWRITE(B B,b b1 1)操作执行之前发生故障的事务)操作执行之前发生故障的事务日志。日志。事务事务T T的延时更新日志记录的延时更新日志记录:2022年3月29日11时01分44时间时间日志记录日志记录数据库存储的值数据库存储的值事务开始之前事务开始之前A = 10000B = 3000时刻时刻1时刻时刻2时刻时刻3当系统进行恢复时,无需执行任何操作。当系统进行恢复时,无需执行任何操作。数据库中账户数据库中账户A A和和B B的值仍为的值仍为1000010000和和30003000。13.4.2 13.4.2 立即更新技术立即更新技术o更新一旦发生即被施
35、加到数据库中,更新一旦发生即被施加到数据库中,而无需等到事务提交点以及所有的更而无需等到事务提交点以及所有的更改被保存在事务日志时。改被保存在事务日志时。o除了需要重做故障之前已提交的事务除了需要重做故障之前已提交的事务所做的更改外,还需要撤销当故障发所做的更改外,还需要撤销当故障发生时仍未提交的事务所造成的影响。生时仍未提交的事务所造成的影响。2022年3月29日11时01分45立即更新技术的日志内容立即更新技术的日志内容o 当事务当事务T T开始开始时,时,“事务开始事务开始”(或(或)被)被写入事务日志文件。写入事务日志文件。o 当执行当执行写操作写操作时,向日志文件中写入一条包含必要数
36、时,向日志文件中写入一条包含必要数据的记录。据的记录。o 一旦写入了事务日志记录,就对数据库缓冲区进行写一旦写入了事务日志记录,就对数据库缓冲区进行写更新更新。o 当缓冲区数据被转入辅存时,写入对数据库的更新当缓冲区数据被转入辅存时,写入对数据库的更新o 读数据库自身的更新在缓冲区下一次被刷新到辅存时读数据库自身的更新在缓冲区下一次被刷新到辅存时进行进行。o 当事务当事务T T提交提交时,时,“事务提交事务提交”()记录)记录被写入事务日志。被写入事务日志。2022年3月29日11时01分46说明说明o日志记录是在对应的写操作施加到数日志记录是在对应的写操作施加到数据库之前被写入的,这称为据库
37、之前被写入的,这称为“先写日先写日志协议志协议”。o通过使用先写日志协议,恢复管理器通过使用先写日志协议,恢复管理器可以大胆假设,如果在日志文件中不可以大胆假设,如果在日志文件中不存在某个事务的提交记录,则该事务存在某个事务的提交记录,则该事务在故障发生时一定处于活动状态,因在故障发生时一定处于活动状态,因此必须被撤销。此必须被撤销。2022年3月29日11时01分47说明说明o 如果事务被撤销,则可利用日志撤销事如果事务被撤销,则可利用日志撤销事务所做的修改,因为日志中包含了所有务所做的修改,因为日志中包含了所有被更新字段的原始值(被更新字段的原始值(前像前像)。)。o 由于一个事务可能对一
38、个数据项进行过由于一个事务可能对一个数据项进行过多次更改,因此对写的撤销应按多次更改,因此对写的撤销应按逆序逆序进进行。行。o 无论事务的写操作是否被施加到了数据无论事务的写操作是否被施加到了数据库,写入数据项的前像保证了数据库被库,写入数据项的前像保证了数据库被恢复到事务开始前的状态。恢复到事务开始前的状态。2022年3月29日11时01分48恢复过程恢复过程o 对于任何对于任何在日志中同时有在日志中同时有“事务开始事务开始”和和“事事务提交务提交”记录的事务,用日志记录来记录的事务,用日志记录来重做重做,按,按日志记录的方式写入更新字段的日志记录的方式写入更新字段的后像值后像值。o 对于任
39、何对于任何在日志中只有在日志中只有“事务开始事务开始”记录而记录而没没有有“事务提交事务提交”记录的事务,必须记录的事务,必须撤销撤销它。这它。这里使用日志记录得到被修改字段的里使用日志记录得到被修改字段的前像值前像值,并,并将前像值写入数据库,从而将数据库恢复到事将前像值写入数据库,从而将数据库恢复到事务开始之前的状态。撤销操作按它们被写入日务开始之前的状态。撤销操作按它们被写入日志的逆序进行。志的逆序进行。2022年3月29日11时01分49立即更新日志示例立即更新日志示例o 转账转账事务事务T T的立即更新日志记录的立即更新日志记录:2022年3月29日11时01分50时间时间日志记录日
40、志记录数据库存储的值数据库存储的值事务开始之前事务开始之前A = 10000B = 3000时刻时刻1时刻时刻2时刻时刻3A = 8000时刻时刻4时刻时刻5B = 5000时刻时刻6转账事务转账事务立即更新示例(续)立即更新示例(续)o 写操作写操作WRITE(B, bWRITE(B, b1 1) )执行之前发生故障时执行之前发生故障时的事务日志的事务日志:2022年3月29日11时01分51时间时间日志记录日志记录数据库存储的值数据库存储的值事务开始之前事务开始之前A = 10000B = 3000时刻时刻1时刻时刻2时刻时刻3A = 8000事务事务T T必须被撤销,因此执行必须被撤销,
41、因此执行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) 操作,操作,
42、A A和和B B的值分别为的值分别为80008000和和50005000。13.4.3 13.4.3 镜像页技术镜像页技术o 在镜像页模式中,数据库被认为是由固在镜像页模式中,数据库被认为是由固定大小的磁盘定大小的磁盘分区分区的逻辑存储单元组成的逻辑存储单元组成。o 通过页表将页映射到物理通过页表将页映射到物理磁盘分区磁盘分区,数,数据库中的每个逻辑页对应页表中的一条据库中的每个逻辑页对应页表中的一条记录。每条记录包含页所存储的物理存记录。每条记录包含页所存储的物理存储的分区号。储的分区号。o 在单用户环境下,镜像页技术不需要使在单用户环境下,镜像页技术不需要使用事务日志,在多用户环境下可能需
43、要用事务日志,在多用户环境下可能需要事务日志来支持并发控制事务日志来支持并发控制。2022年3月29日11时01分53镜像页技术镜像页技术( (续续) )o 镜像页方法在事务的生存期内,维护两个镜像页方法在事务的生存期内,维护两个页表,页表,:当前页表当前页表、镜像页表镜像页表。o 当事务刚当事务刚启动启动时,两个页表是一样的。此时,两个页表是一样的。此后,镜像页表不再改变,并在系统故障时后,镜像页表不再改变,并在系统故障时用于恢复数据库。用于恢复数据库。o 在事务在事务执行执行过程中,当前页表被用于记录过程中,当前页表被用于记录对数据库的所有更新。对数据库的所有更新。o 但事务但事务结束结束
44、时,当前页表转变成镜像页表时,当前页表转变成镜像页表。2022年3月29日11时01分54镜像页模式镜像页模式2022年3月29日11时01分55说明说明o 被事务影响的页被复制到新的物理存储被事务影响的页被复制到新的物理存储区中,通过当前页表,这些分区和那些区中,通过当前页表,这些分区和那些没有被修改的分区是事务可以访问的。没有被修改的分区是事务可以访问的。o 被更改的页的老版本保持不变,通过镜被更改的页的老版本保持不变,通过镜像页表事务仍然可以访问这些页。像页表事务仍然可以访问这些页。o 镜像页表包含事务开始之前页表中存在镜像页表包含事务开始之前页表中存在的记录以及从未被事务修改的分区记录
45、的记录以及从未被事务修改的分区记录。o 镜像页表在事务发生时保持不变,用于镜像页表在事务发生时保持不变,用于撤销事务时使用。撤销事务时使用。2022年3月29日11时01分56镜像页技术优缺点镜像页技术优缺点o优点优点:消除了维护事务日志文件的开消除了维护事务日志文件的开销,而且,由于不需要对操作进行撤销,而且,由于不需要对操作进行撤销或重做,因此恢复速度非常快。销或重做,因此恢复速度非常快。o缺点缺点:数据碎片或分散,需要定期进数据碎片或分散,需要定期进行垃圾收集以回收不能访问的分区。行垃圾收集以回收不能访问的分区。2022年3月29日11时01分5713.4.4 13.4.4 检查点技术检
46、查点技术o在利用日志进行数据库恢复时,一般在利用日志进行数据库恢复时,一般需要检查所有的日志记录。这有两个需要检查所有的日志记录。这有两个问题问题:n 搜索整个日志将耗费大量的时间,搜索整个日志将耗费大量的时间,n 很多需要重做的事务实际上可能已经很多需要重做的事务实际上可能已经将它们的更新结果写到了数据库中,将它们的更新结果写到了数据库中,而恢复子系统又重新执行这些操作,而恢复子系统又重新执行这些操作,同样浪费了大量时间。同样浪费了大量时间。2022年3月29日11时01分58检查点技术检查点技术o 为解决为解决上述上述问题,发展了具有检查点的恢问题,发展了具有检查点的恢复技术。复技术。o
47、这种技术在日志文件中增加两个新的记录这种技术在日志文件中增加两个新的记录n 检查点记录检查点记录n 重新开始记录重新开始记录o 检查点记录的内容包括:检查点记录的内容包括:n 建立检查点时刻所有正在执行的事务列表;建立检查点时刻所有正在执行的事务列表;n 这些事务最近一个日志记录的地址。这些事务最近一个日志记录的地址。2022年3月29日11时01分59o 重新开始文件用于记录各个检查点记录重新开始文件用于记录各个检查点记录在日志文件中的地址。在日志文件中的地址。图示为图示为建立检查建立检查点点C Ci i时对应的日志文件和重新开始文件。时对应的日志文件和重新开始文件。动态维护日志文件的方法动
48、态维护日志文件的方法o 周期性地执行建立检查点和保存数据库状态的周期性地执行建立检查点和保存数据库状态的操作。具体步骤:操作。具体步骤: 将日志缓冲区中的所有日志记录写到磁盘日志将日志缓冲区中的所有日志记录写到磁盘日志文件上。文件上。 在日志文件中写入一个检查点记录,该记录包在日志文件中写入一个检查点记录,该记录包含所有在检查点运行的事务的标识。含所有在检查点运行的事务的标识。 将数据缓冲区将数据缓冲区中中所有修改过的数据写入到磁盘所有修改过的数据写入到磁盘数据库中。数据库中。 将检查点记录在日志文件中的地址写入一个重将检查点记录在日志文件中的地址写入一个重新开始文件,以便在发生系统故障而重启时可新开始文件,以便在发生系统故障而重启时可利用该文件找到日志文件中的检查点记录地址利用该文件找到日志文
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《13洁净的水域》说课稿-2023-2024学年科学六年级下册苏教版
- Unit 2 Months of a Year Lesson Three(说课稿)-2024-2025学年重大版英语六年级上册
- Unit 6 Chores Lesson 4 Let's spell(说课稿)-2024-2025学年人教新起点版英语五年级上册001
- 2025水泥砖销售合同范文
- 2024年七年级数学下册 第10章 一元一次不等式和一元一次不等式组10.4一元一次不等式的应用说课稿(新版)冀教版
- 中型臭氧设备购买合同范例
- 8 安全地玩(说课稿)-部编版道德与法治二年级下册
- 农业设备供货合同范例
- 冷库设备购销合同范例
- 个人借还款合同范例
- 大学生创新创业教程PPT全套完整教学课件
- 小学科学项目化作业的设计与实施研究
- 2023年考研考博-考博英语-西安建筑科技大学考试历年真题摘选含答案解析
- 2020年中考生物试卷及答案
- 反接制动控制线路电路图及工作原理
- MCNP-5A程序使用说明书
- java基础知识大全
- SMM英国建筑工程标准计量规则中文 全套
- GB 18030-2022信息技术中文编码字符集
- SB/T 10977-2013仓储作业规范
- 弘扬中华传统文化课件
评论
0/150
提交评论