zoukankan
html css js c++ java
数据库 的 恢复策略
事务故障的恢复
事务故障
是指事务在运行至正常终止点前被终止,这时恢复子系统应利用日志文件撤销(UNDO)此事务已对数据库进行的修改。
系统恢复的步骤:
(1)反向扫描日志文件(即从最后向前扫描日志文件),查找该事物的更新操作。
(2)对该事务的更新操作执行逆操作。即将日志记录中"更新前的值"写入数据库。这样如果记录中是插入操作,则相当于做删除操作;若记录中是删除操作,则做插入操作;若是修改,则相当于修改前值代替修改后值。
(3)继续反向扫描日志文件,查找该事务的其他更新操作,并作同样处理。
(4)如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了。
系统故障
系统故障的恢复是由系统在重新启动时候自动完成的,不需要用户干预。
系统的恢复步骤是:
(1)正向扫描日志文件(即从头扫描日志文件),找出在故障发生前已经提交的事务(这些事务既有BEGIN TRANSACTION记录,也有COMMIT记录),将其事务标识记入重做(REDO)队列。同时找出故障发生时尚未完成的事务(这些事务只有BEGIN TRANSACTION记录,无相应的COMMIT记录),将其事务标识记入撤销队列。
(2)对撤销队列中的各个事务进行撤销(UNDO)处理。
进行UNDO处理的方法是,反向扫描日志文件,对每一个UNDO事务的更新操作执行逆操作,将将日志记录中"更新前的值"写入数据库(该方法和事务故障的解决方法一致)。
(3)对重做队列中的各个事务进行重做(REDO)处理。
进行REDO处理的方法是:正向扫描日志文件,对每一个REDO事务从新执行日志文件登记的操作。即将日志记录中"更新后的值"写入数据库。
具有检查点的恢复技术
利用日志技术进行数据库恢复时,恢复子系统必须搜索日志,确定哪些事务需要REDO,哪些事务需要UNDO。一般来说,需要检查所有的记录。这样做有两个问题。
一是搜索整个日志将消耗大量的时间。二是很多需要REDO处理的事务实际上已经将它们的更新操作结果写到数据库中了,然而恢复子系统又重新执行了这些操作,浪费了大量时间。
检查点的理解
###
首先查看有几个检查点,找到里故障最近的一次检查点,之后看看哪些事务执行的时间是在检查点之前完成的
(1)如果事务在检查点之前完成的则不需要REDO(如:T1)
(2)如果事务在检查点之前执行,在检查点之后故障之前提交则需要REDO(如:T2,T4)
(3)如果事务在故障后,则需要执行UNDO(如:T3,T5)
查看全文
相关阅读:
centos7下安装jdk
在centos7关于防火墙的基本操作
hadoop的特性
java中怎么使用combobox,并获取其选中的值
@suppressWarnings("unchecked")在java中的作用
The processing instruction target matching "[xX][mM][lL]" is not allowed.
Invalid byte 2 of 2-byte UTF-8 sequence解决方案
Nmap
XSS-笔记
sql盲注-笔记
原文地址:https://www.cnblogs.com/gxcstyle/p/6881477.html
最新文章
转发大神nginx配置详解
mysql5.7的手动安装|yum安装
后端程序员常用的linux命令
mysql数据库从一台服务器迁移到另一台服务器上
mysql在group by分组后查询第二条/第三条乃至每组中任意一条数据
mysql之消息队列
常用的两种web单点登录SSO的实现原理
中文乱码的种类
【linux音频应用】tinycap与arecord工具的使用
C语言笔记
热门文章
情商提高分析
面试
简历的写法
电影手法
Docker是什么?(转载)
git table无法自动补全问题
imsi decode
jQuery(二)
svn为什么要先更新在提交
jQuery(一)
Copyright © 2011-2022 走看看