数据库恢复的实现技术
影子拷贝
想要更新数据库的事务,首先创建数据库的一个完整拷贝,所有更新在库的这个新拷贝上进行,不动原来数据;如果在任何时间点上事务被终止,系统仅删除这个新的拷贝。
为每个事务拷贝一个大型数据库代价极其昂贵,影子拷贝模式普遍用于文本编辑器,影子拷贝的一个变种是影子分页,只拷贝需要更新的数据页
基于日志记录的数据库恢复
日志文件:是用来记录事务对数据库的更新操作的文件
日志文件的格式:以记录为单位的日志文件;以数据块为单位的日志文件。
日志文件的内容:各个事务的开始标记begin transaction
/结束标记/所有更新操作,与事务有关的内部更新操作,作为日志文件中的一个日志记录。
每条日志记录的内容:
事务标识Ti:是事务的唯一标识
数据项标识Xj:所写数据项的唯一标识
更新前数据的旧值V1:对插入操作而言,此项为空值
更新后数据的新值V2:对删除操作而言,此项为空值
将一条更新日志记录表示为<Ti,Xj,V1,V2>,表示事务Ti对数据项Xj执行写操作,写之前Xj的值是V1,写之后Xj的值是V2。
每次事务执行写操作之前,需要创建该操作的日志记录,并将它加到日志中。为了从系统故障和磁盘故障中恢复时能使用日志记录,日志必须存放在稳定存储器中。可以根据实际情况,使用日志来重做redo或者撤销undo事务了。
日志文件的用途:
进行事务故障恢复
进行系统故障恢复
协助后备副本进行介质故障恢复
Last updated