几种数据库恢复技术比较

时间:2022-08-06 12:23:43

几种数据库恢复技术比较

摘要:本文分析了数据库恢复技术中的延迟更新技术、立即更新技术、镜像页技术、检查点技术的特点和区别,在实际的数据库操作过程中根据不同的损坏情况数据库管理系统采用不同的恢复技术。

关键词:恢复技术;延迟更新;镜像页;检查点

中图分类号:TP311.13 文献标识码:A 文章编号:1007—9599 (2012) 14—0000—02

数据库的损坏有两种类型物理损坏、非物理或事务故障,数据库管理系统使用的恢复技术依赖于数据库损坏的类型。

一、延迟更新技术

采用延迟更新技术时,只有到达事务的提交点,更新才被写入数据库。即数据库的更新要延迟到事务执行成功并提交时。在事务执行过程中,更新只被记录在事务日志和缓冲区中。当事务提交后,事务日志被写入磁盘,更新被记录到数据库。如果一个事务在到达提交点之前出现故障,它将不会修改数据库,因此也没必要进行撤销操作。使用延迟更新技术时,事务日志的内容如下。

(1)当事务T启动时,将“事务开始”(或)记录写入事务日志文件。

(2)在事务T执行期间,写入一条新的日志记录,该新记录包含所有之前制定的日志数据,例如为属性A赋新值ai,则用表示。每一个记录包括事务的名称T,属性的名称A和属性的新值ai。

(3)当事务T的所有活动都成功提交时,将记录写入事务日志,并将该事务的所有日志记录写到磁盘上,然后提交事务。使用日志记录来完成对数据库的真正更新。

(4)如果事务T被撤销了,则忽略该事务的事务日志,并且不执行写操作。

如果在数据库真正更新过程中发生故障,所有出现了事务开始和事务提交日志记录的事务必须被重做。重做的顺序是按日志记录被写入日志的顺序执行。如果在故障发生前已经执行了写操作,则再次写入该数据,这种方法保证了一定会更新所有在故障发生前没有被正确更新的数据项。

对所有出现了事务开始和事务撤销的日志记录的事务,不进行特别的操作。

如果在恢复过程中又发生了系统崩溃,则可以再次使用日志记录来恢复数据库。

二、立即更新技术

采用立即更新技术时,更新一旦发生即被施加到数据库中,而无需等到事务提交点以及所有的更改被保存在事务日志时。使用立即更新技术时,事务日志内容如下。

(1)当事务T开始时,“事务开始”(或)被写入事务日志文件。

(2)当执行一个写操作时,向日志文件中写入一条包含必要数据的记录。

(3)一旦写入了事务日志记录,就对数据库缓冲区进行写更新。

(4)当缓冲区数据被转入辅助存储器时,写入对数据库的更新。

(5)读数据库自身的更新在缓冲区下一次被刷新到辅助存储时进行。

(6)当事务T提交时,“事务提交”()记录被写入事务记录。

实际上,日志记录(或至少是部分日志记录)是在对应的写操作施加到数据库之前被写入的,这称为“先写日志协议”。因为如果先对数据库进行更新,而在日志记录被写入之前发生了故障,则恢复管理器将无法进行撤销或重做。通过使用先写日志协议,恢复管理器可以大胆假设,如果在日志文件中不存在某个事务的提交记录,则该事务在故障发生时一定处于活动状态,因此必须被撤销。

如果事务被撤销,则可利用日志撤销事务所做的修改,因为日志中包含了所有被更新字段的原始值(前像)。由于一个事务可能对一个数据项进行过多次更改,因此对写的撤销应该按逆序进行。无论事务的写操作是否被施加到了数据库本身,写入数据项的前像保证了数据库被恢复到事务开始前的状态。

如果系统发生了故障,恢复过程使用日志对事务进行如下的撤销或重做。

(1)对于任何“事务开始”和“事务提交”记录都出现在日志中的事务,用日志记录来重做,按日志记录的方式写入更新的后像值。

(2)对于任何“事务开始”记录出现在日志中,而“事务提交”记录未出现在日志中的事务,必须撤销它。

三、镜像页技术

在镜像页模式中,数据库被认为是由固定大小的磁盘页的逻辑存储单元组成。通过页表将页映射到物理存储分区,数据库中的每个逻辑页对应页表中的一条记录。每条记录包含页所在的物理存储的分区号。因此,镜像页模式是间接页分配的一种形式。在单用户环境下,镜像页技术不需要使用事务日志,但在多用户环境下可能需要事务日志来支持并发控制。

镜像页方法在事务的生存期内,为其维护两个页表,一个是当前页表,另一个是镜像页表,当事务刚启动时,两个页表是一样的。此后,镜像页表不再改变,并在系统故障时用于恢复数据库。在事务执行过程中,当前页表被用于记录对数据库的所有更新。但事务结束时,当前页表转变成镜像页表。

如图1所示,事务影响的页被复制到新的物理存储区中,通过当前页表,这些分区和那些没有修改的分区是事务可以访问的。被更改的页的老版本保持不变,并且通过镜像页表事务仍然可以访问这些页。镜像页表包含事务开始之前页表中存在的记录以及指向从未被事务修改的分区记录。镜像页表在事务发生时保持不变,用于撤销事务时使用。

相对基于日志的方法,镜像页技术有很多优点:它消除了维护事务日志文件的开销,而且,由于不需要对操作进行撤销或重做,因此其恢复速度也非常快。但它也有缺点,比如数据碎片或分散,需要定期进行垃圾收集以回收不能访问的分区。

四、检查点技术

在利用日志机制进行数据库恢复时,恢复子系统必须搜索日志,以确定哪些需要重做,哪些需要撤销。一般来说,需要检查所有的日志记录。这样做有两个问题:一是搜索整个日志将耗费大量的时间,二是很多需要重做处理的事务实际上可能已经将它们的更新结果写到了数据库中,而恢复子系统又重新执行了这些操作,同样浪费了大量时间。为了解决这些问题,又发展了具有检查点的恢复技术。这种技术在日志文件中增加两个新的记录—检查点记录和重新开始记录,并让恢复子系统在登记日志文件期间动态地维护日志。

检查点记录的内容包括以下两点。

(1)建立检查点时刻所有正在执行的事务列表。

(2)这些事务最近一个日志记录的地址。

重新开始文件用于记录各个检查点记录在日志文件中的地址。

动态维护日志文件的方法是周期性地执行记录检查点和保存数据库状态的操作。其具体步骤如下:

(1)将日志缓冲区中的所有日志记录写入到磁盘日志文件上。

(2)在日志文件中写入一个检查点记录,该记录包含所有在检查点运行的事务的标识。

(3)将数据缓冲区的所有修改过的数据写入到磁盘数据库中。

(4)将检查点记录在日志文件中的地址写入一个重新开始文件,以便在发生系统故障而重启时可以利用该文件找到日志文件中的检查点记录地址。

恢复子系统可以定期或不定期地建立检查点来保存数据库的状态。

在系统出现故障时,恢复子系统将根据事务的不同状态采取不同的恢复策略,如图2。

假设使用事务日志进行立即更新,同时考虑图2所示的事务T1、T2、T3和T4的时间线。当系统在tf时刻发生故障时,只需扫描事务日志至最近的一个检查点tc。

(1)事务T1是在检查点之前提交的,因此没有问题,不需要重做。

(2)事务T2是在检查点之前开始的,但在故障点时已经完成,因此需要重做。

(3)事务T3是在检查点之后开始的,但在故障点时已经完成,因此也需要重做。

(4)事务T4也是在检查点之后开始的,而且在故障点时还未完成,因此需要撤销。

参考文献:

[1]何玉洁.数据库系统教程[M].北京:人民邮电出版社,2010

[2]施伯乐等,数据库系统教程(第3版)[M].北京:高等教育出版社,2008

上一篇:普罗科菲耶夫d小调奏鸣曲第二乐章演奏分析 下一篇:浅析肖邦OP.66升c小调幻想即兴曲