数据库系统概论——恢复技术

一、数据库恢复概述

DBMS的子恢复系统必须确保故障发生后能够把数据库恢复到某种一致状态,最大限度地降低损失,并将崩溃后的数据库不能使用的时间减小到最小

1.1故障分类

1.1.1事务故障

某个事务在运行过程中由于种种原因未能运行到正常终止而夭折
两种错误导致事务执行失败

  • 程序的逻辑错误
  • 系统错误

1.1.2系统故障

由于某种原因造成整个系统的正常运行突然停止,致使所有正在运行的事务都以非正常方式终止
产生原因

  • 操作系统或 DBMS代码错误
  • 操作员操作失误
  • 特定类型的硬件错误(CPU故障)
  • 突然停电等

1.1.3介质故障

存储数据库的存储设备故障
产生原因

  • 磁盘损坏
  • 磁头碰撞
  • 操作系统的某种潜在错误
  • 瞬时强磁场干扰等

1.2恢复的基本思想

在系统正常运行时建立冗余数据,保证有足够的信息可用于故障恢复。故障发生后采取措施,将数据库内容恢复到某个一致性状态,保证事务原子性和持久性
数据库系统主要通过登记日志和数据转储建立冗余数据
利用冗余数据进行故障恢复考虑因素

  • 存储器性质
  • 事务的更新何时写入数据库
  • 缓冲

二、基于日志的恢复技术

2.1日志

日志是日志记录的序列,记录了数据库中所有的更新活动

2.1.1日志记录的格式

一条更新日志记录了一个事务对数据库的一次 write操作,包括

  • 事务标识符
  • 操作类型
  • 操作对象
  • 旧值
  • 新值
<Ti,start>     --事务Ti开始
<Ti,Xj,V1,V2>  --事务Ti对 Xj的一次更新,其中 V1是旧值,V2是新值。对于插入,V1为空;对于删除,V2为空
<Ti,commit>    --事务Ti正常提交
<Ti,abort>     --事务Ti异常终止

2.1.2登记日志的原则

日志记录必须严格按并发事务执行的时间次序登记
必须先记日志,后写数据库

2.1.3 redo和 undo

redo(Ti) 根据日志记录,按登记日志的次序,将事务 Ti每次更新的数据对象的新值用 write操作重新写到数据库(不是重新执行事务 Ti)
undo(Ti) 根据日志记录,按登记日志的相反次序,将事务 Ti每次更新的数据对象的旧值用 write操作写回数据库
redo和 undo都是幂等的,执行多次等价于执行一次

2.2延迟更新技术

延迟更新将事务对数据库的更新推迟到事务提交之后
遵循规则

  1. 每个事务在到达提交点之前不能更新数据库
  2. 在一个事务的所有更新操作的日志记录写入稳定存储器之前,该事务不能到达提交点

2.2.1基于延迟更新技术的事务故障恢复

事务 Ti发生故障时,Ti未到达提交点,因此Ti的更新操作都登记在日志中,并未输出到数据库
当事务 Ti发生故障时,只需清除日志中事务 Ti的日志记录,而无须对数据库本身做进一步处理。如果故障不是事务Ti本身的逻辑错误,则事务Ti可以在稍后重新启动

2.2.2基于延迟更新技术的系统故障恢复

  1. 正向扫描日志文件,建立两个事务列表。一个是已提交事务列表,包含所有具有日志记录 <Ti,commit>的事务 Ti;另一个是未提交事务列表,包含所有具有日志记录 <Tj,start>但不具有日志记录 <Tj,commit>的事务Tj
  2. 对已提交事务列表的每个事务 Ti执行 redo(Ti):正向扫描日志文件,对于每个形如 <Ti,Xj,V1,V2>的日志记录,如果 Ti在已提交事务列表中,则将 Xj=V2写到数据库中

2.3即时更新技术

即时更新技术允许事务在活跃状态时就将更新输出到数据库当中
处于活动状态的事务直接在数据库上实施的更新称为非提交更新
遵循规则

  1. 在日志记录 <Ti,Xj,V1,V2>安全地输出到稳定存储器之前,事务 Ti不能用 Xi=V2更新数据库
  2. 在所有 <Ti,Xj,V1,V2>类型日志记录安全地输出到稳定存储器之前,不允许事务 Ti提交

2.3.1基于即时更新技术的事务故障恢复

事务 Ti发生故障时,它可能已经将某些更新输出到数据库,因此必须执行 undo(Ti)
反向扫描日志文件直到遇到 <Ti,start>,对于每个形如 <Ti,Xj,V1,V2>的日志记录,将 Xj=V1写到数据库当中

2.3.2基于即时更新技术的系统故障恢复

  1. 正向扫描日志文件,建立两个事务列表。一个是已提交事务列表,包含所有具有日志记录 <Ti,commit>的事务 Ti;另一个是未提交事务列表,包含所有具有日志记录 <Tj,start>但不具有日志记录 <Tj,commit>的事务Tj
  2. 对未提交事务列表的每个事务 Ti执行 undo(Ti):反向扫描日志文件直到遇到未提交事务列表每个事务 Tk的 <Tk,commit>,对于每个形如 <Ti,Xj,V1,V2>的日志记录,如果 Ti在未提交事务列表中,则将 Xj=V1写到数据库中
  3. 对已提交事务列表的每个事务 Ti执行 redo(Ti):正向扫描日志文件,对于每个形如 <Ti,Xj,V1,V2>的日志记录,如果 Ti在已提交事务列表中,则将 Xj=V2写到数据库中

三、基于检查点的恢复技术

3.1检查点

提高系统故障恢复效率的基本方法是使用检查点技术
假设系统在时刻 Tc设立最后一个检查点,在时刻 Tf发生系统故障,如图可以把事务分为五类

  1. T1:在检查点之前提交
  2. T2:在检查点之前开始执行,在检查点之后故障点之前提交
  3. T3:在检查点之前开始执行,在故障点时还未完成
  4. T4:在检查点之后开始执行,在故障点之前提交
  5. T5:在检查点之后开始执行,在故障点时还未完成

mitHpt.png

3.2基于检查点的系统故障恢复

当系统故障发生时,首先要重新启动系统。系统重启后,恢复子系统自动执行以下步骤

  1. 得到最后一个检查点记录:找到最后一个检查点记录在日志文件中的地址,取出最后一个检查点记录 <checkpoint,L>
  2. 初始化两个事务列表 UNDO-LIST(需要执行 undo操作的事务集合)和 REDO-LIST(需要执行 redo操作的事务集合):将 L中的所有事务都放入 UNDO-LIST,而 REDO-LIST为空
  3. 建立两个事务列表 UNDO-LIST和 REDO-LIST:从最近的检查点开始,正向扫描日志文件直到结束,遇到 <Ti,start>就把 Ti加入 UNDO-LIST;遇到 <Ti,commit>就把 Ti从 UNDO-LIST移到 REDO-LIST
  4. 对 UNDO-LIST中的每个事务 Ti执行 undo(Ti):反向扫描日志文件直到遇到未提交事务列表每个事务 Tk的 <Tk,commit>,对于每个形如 <Ti,Xj,V1,V2>的日志记录,如果 Ti在未提交事务列表中,则将 Xj=V1写到数据库中
  5. 对 REDO-LIST中的每个事务 Ti执行 redo(Ti):正向扫描日志文件,对于每个形如 <Ti,Xj,V1,V2>的日志记录,如果 Ti在已提交事务列表中,则将 Xj=V2写到数据库中

四、介质故障恢复技术

4.1转储

将整个或部分数据库复制到磁带或另一个磁盘上,产生数据库后备副本
后备副本可以脱机保存,供介质故障恢复时使用

4.1.1静态转储与动态转储

从转储时是否允许事务运行角度考虑
静态转储是在系统中无运行事务时进行的转储;一定得到一个一致的副本,但降低了数据库的并发性
动态转储允许转储操作与用户事务并发执行,转储期间允许事务对数据库进行存取和更新;不能保证副本中数据的一致性

4.1.2海量存储与增量存储

从转储时是转储整个数据库还是部分数据库角度考虑
海量转储制作数据库的完整副本
增量转储只复制上此转储后更新过的数据,形成数据库的增量副本,增量副本不能单独使用
恢复时,必须使用最后一个完整副本和之后的所有增量副本才能将数据库恢复到一致状态

4.2介质故障恢复

当数据库被破坏时,需要用转储的后备副本和日志进行恢复,这里只考虑海量转储

  1. 装入最新的数据库后备副本,将数据库恢复到最近一次转储时的状态
  2. 装入转储后的日志,redo已完成的事务

转载于:https://www.cnblogs.com/xxwang1018/p/11546736.html

【数据库系统】数据库系统概论——第十章 数据库恢复技术 【数据库系统】数据库系统概论====第十章 数据库恢复技术 10.1事务的基本概念 事务 事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位,是恢复和并发控制的基本单位。 (1)事务和程序的区别 ①在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。 ②一个程序通常包含多个事务。 (2)事务的定义 ①显式定义方式 事务正常结束格式: BEGIN TRANSACTION; SQL 语句; COMMIT; 事务正常结束,提交事务的所有操作(读+ 阅读详情

相关推荐

echarts实现折线图上下限区域展示

效果图: 画这种区域中主要是利用了series的两个属性: 思路:上下限都画上区域,然后折线利用图形透明度隐藏,给上区域加上颜色,给下区域加上白色(echarts图背景是啥色,就加啥色) lineStyle: { opacity: 0 }, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形 areaStyle: { color: 'rgba(0,122,255,0.1)' }, // 填充的颜色 我的需求是最大天数、最小天数、

小太阳的博客 1万+

数据库恢复技术

数据库故障的种类 事务内部的故障 事务故障是由于程序执行错误而引起事务非预期的、异常终止的故障。 它发生在单个事务的局部范围内,实际上就是程序的故障。有的事务故障可以通过事务程序本身发现。 系统故障 系统故障是计算机程序的语法错误或逻辑错误。 系统故障是指系统在运行过程中,由于某种...

weixin_44955712的博客 658

生物信息学新手必看:MAFFT多序列比对从安装到实战(附参数优化技巧)

本文为生物信息学新手提供了MAFFT多序列比对工具的完整指南。从Linux环境下的安装部署,到核心算法策略(如FFT-NS-i、L-INS-i)的选择逻辑,再到空位罚分等关键参数的深度解析与优化技巧,手把手教你完成从原始序列到高质量比对结果的实战流程,为后续进化树构建等分析奠定坚实基础。

weixin_29230773的博客 488

【数据库系统及应用】— 日志、故障恢复、事务、并发控制、调度、检查点

Sc1=r3(B)r1(A)w3(B)r2(B)r2(A)w2(B)r1(B)w1(A),交换r1(A)和W3(B),得到r3(B)w3(B)r1(A)r2(B)r2(A)w2(B)r1(B)W1(A);再交换r1(A)和r2(B)r2(A)w2(B),得到Sc2=r3(B)W3(B)r2(B)r2(A)w2(B)r1(A)r1(B)w1(A)。选项D的说法是正确的。T1,T2是两个事务,图(a)(b)给出这两个事务的两种调度S1,S2,关于S1,S2,说法正确的选项是_____________。

我们都是被分成两半的人,一边热爱生活,一边憎恨生活。面对生活,我们总是在矛盾的两端摇摆,在反复的矛盾和犹豫中,一边踉跄前行,一边重振旗鼓。我渴望改变,渴望变得更好,渴望找到出口……就像一个溺水人的挣扎,就像一个救生圈。我是一个矛盾集合体,想要变得快乐,但是 1562

使用buildroot系统的qmake编译QT出现Unknown module(s) in QT: xxxx 的错误解决方法

可以看到,我这里使用的是 qt5base-5.15.2 目录下的qmake,这个qmake只包含了基础的qt模块,而额外添加的qt模块没有包含进去,需要使用。可以看到我这里是有的,如果你跟我一样,模块存在,但是还是报找不到对应模块的错误的话,大概率是跟我一样,用错qmake了,看第二点。在包含 qt5base 目录下查看,是否有对应模块的目录,如果没有的话,需要通过make menuconfig 添加一下。目录下的qmake才可以。

T541132的博客 2490

Unity的粒子系统使用shadergraph(内置管线)制作的一个顶点偏移shader,但是粒子模型移动时,顶点也会偏移?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1174

第十章——数据库恢复技术

显示定义方式: BEGIN TRANSACTION SQL 语句1 SQL 语句2 …… ROLLBACK –全部操作都取消掉隐式方式:COMMIT(操作序列全部执行完成)ROLLBACK(操作序列全都不执行)默认情况下,SQL Server采用自动提交方式,即如果没有显示定义事务,则一个SQL语句为一个事务。在查询分析器中执行下列语句,DBMS将理解为 3 个事务: 新建查询,执行下面的一组SQL语句,则两个事务 分析下列一段SQL中包括几个事务?运行后对数据产生什么样的影响? 答:两个事务,对数据没有

huayu8086的博客 1586

【调优】OpenClaw从零开始高阶调优之skill篇

本文详细解析了OpenClaw技能系统的核心机制。首先介绍了技能的分层加载逻辑,按照优先级从高到低依次为:工作区专属技能、全局共享技能、出厂自带技能和自定义路径技能。通过流程图展示了从扫描到注册的完整加载流程,并解释了同名技能覆盖规则。随后深入剖析了SKILL.md文件结构,包含YAML元数据定义技能属性和Markdown正文说明使用方法,以公众号写作技能为例展示了具体配置。文章还提供了技能优先级切换的实用技巧,帮助用户灵活管理不同版本的技能。

海兰 240

事务的性质(数据库考试必考)

1、DBMS的恢复管理子系统,目的在于保证事务的(持续性/永久性) 2、DBMS的事务管理子系统,目的在于保证事务的(原子性) 3、DBMS的完整性子系统,目的在于保证事务的(一致性) 4、DBMS的并发控制子系统,目的在于保证事务的(隔离性) ...

weixin_49047177的博客 811

《网络摄像机实战11:flutter_webrtc支持 AWS Kinesis Video Streams信令服务器》

本文介绍了如何在Flutter项目中集成WebRTC实现网络摄像头的实时视频和音频对讲功能。通过使用flutter_webrtc插件,开发者可以快速构建跨平台的视频通信应用。文章详细说明了集成步骤:1)安装flutter_webrtc插件;2)配置信令服务器和KVS服务;3)初始化本地/远程视频渲染器;4)建立WebRTC连接并进行设备呼叫。最后展示了实际应用效果图,证明该方案能有效实现移动端与摄像头的实时音视频交互。该方案为开发智能家居监控等应用提供了技术参考。

lvj_158的专栏 356

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

(数据库系统概论|王珊)第十章数据库恢复技术:习题

如果先写日志,但没有修改数据库,按日志文件恢复时只不过是多执行一次不必要的UNDO操作,并不会影响数据库的正确性。所以为了安全,一定要先写日志文件,即首先把日志记录写到日志文件中,然后写数据库的修改。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致性状态。例如,某工厂的库存管理系统中,要把数量为Q的某种零件从仓库1移到仓库2存放,则可以定义一个事务T。恢复技术可以保证事务的原子性和持久性。

快乐江湖的博客 7485

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

数据库系统概论-数据库恢复技术

Chap10 习题解答1. 试述事务的概念及事务的4个特性。恢复技术能保证事务的哪些特性?2. 为什么事务非正常结束时会影响数据库数据的正确性?请举例说明。 1. 试述事务的概念及事务的4个特性。恢复技术能保证事务的哪些特性? 事务:所谓事务就是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。 事务的四个特性(ACID): 原子性(Atomicity):事务中的操作要么全做,要么全不做 一致性(Consistency):事务的执行结果必须是使数据库从一个一致性状态到

不知知了 的专栏 1175

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【数据库系统概论】数据库恢复技术

事务(Transaction)是用户定义的数据操作序列,这些操作被作为一个完整的、不可分割的工作单元来执行。在一个事务内的操作要么全部执行,要么全部不执行。事务:是数据库中用于实现数据操作的一种基本单元。在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句,甚至是整个程序中的部分操作。程序:通常包含多个事务事务是数据库系统中实现恢复和并发控制的基本单位。

学习中 1153

数据库系统概论(二十)数据库恢复技术

本文介绍了数据库恢复技术的核心概念。首先通过自动售货机类比解释了事务的定义和特性(原子性、一致性、隔离性、持久性),并区分了隐式与显式事务的使用场景。其次分析了数据库故障的必然性(硬件/软件故障、人为操作)及导致的后果(数据不一致或丢失)。最后重点阐述了恢复技术的两大关键手段:数据转储(包括静态/动态转储、全量/增量备份)和日志文件记录,通过备份副本和操作日志实现数据重建。这些机制共同保障了数据库在故障后的可靠恢复能力。

2402_83322742的博客 1190

【数据库系统概论】数据库恢复技术--复习

回放日志的基本思想是从数据库的最后一个检查点开始,按日志顺序逐条回放事务日志,首先重做已提交事务的操作,随后回滚未提交事务的操作。是数据库中操作的一个基本单位,是数据库恢复技术和并发控制的基本单位,事务由一系列的数据库操作组成,这些操作要么全部执行(操作全部成功,事务成功提交),要么全部不执行(事务全部失败,全部回滚)。检查点的存在使得恢复过程变得更加高效。题目解析:T1,T2,T3,T4代表的是不同的事务,T1是第一个执行的事务,T2是第二个执行的事务,T3是第三个执行的事务,T4是第四个执行的事务。

2302_80281315的博客 1385

数据库系统概论(第6版 王珊 杜小勇 陈红)第十一章 数据库恢复技术 课后习题答案

本文整理了《数据库系统概论》第11章"数据库恢复技术"的习题解答,包括事务概念、ACID特性、日志登记原则、故障恢复策略等内容。重点解析了检查点技术的优势及恢复步骤,通过具体日志案例演示不同故障场景下的恢复操作。详细解答了事务故障、系统故障和介质故障的恢复方法,并探讨了数据库镜像的作用。习题答案采用一题一答形式,涵盖概念解析和实际应用场景,为数据库恢复技术学习提供系统指导。

s_a_g_a的博客 1667

【数据库系统概论】第十章 数据库恢复技术

数据库的恢复:数据库管理系统必须具有把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态)的功能,这就是数据库的恢复管理系统对故障的对策。

1351

数据库系统概论——第十章 数据库恢复技术

一、事务的基本概念 1. 事务(Transaction) (1)概念 是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。 (2)事务和程序是 事务和程序是两个概念。在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序;一个程序通常包含多个事务 (3)事务是恢复和并发控制的基本单位 (4)定义事务 定义方式 显式定义方式 隐...

zj20165149的博客 2927

《数据库系统概论》10——数据库恢复技术

《数据库系统概论》10——数据库恢复技术

m0_65036580的博客 913

《数据库系统概论》| 第十章 数据库恢复技术 知识梳理

数据库恢复技术 目录 10.1  事务的基本概念           事务的ACID特性 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持续性(Durability ) 10.2  数据库恢复概述 10.3  故障的种类 1.事务内部的故障 2.系统故障 3.介质故障 4.计算机病毒 10.4  恢复的实现技术    ...

12 26 25 的博客 7121

数据库系统概论(第十章数据库恢复技术)

第10章 数据库恢复技术 事务是一系列的数据库操作,是数据库应用程序的基本逻辑单元。事务处理(transaction processing)技术主要包括数据库恢复技术和并发控制技术。 10.1 事务的基本概念 1、事务 所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。 事务和程序是两个概念,一般一个程序中包含多个事务。如果用户没有显式的定义事...

王小波的博客 7063

【数据库系统概论】-数据库恢复技术

事务是一系列数据库操作,是数据库应用撑血的基本逻辑单元。事物处理技术主要包括数据库恢复技术和并发控制技术。数据库恢复机制和并发控制机制是数据库管理系统的重要组成部分。 事务的基本概念 一、事务 所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。 事务的开始与结束可以由用户显式控制。如果用户没有显式地定义事务,则由DBMS按缺省规定自动划分事务

gscienty的专栏 1944

第10章 数据库恢复技术(数据库系统概论)

第10章 数据库恢复技术(数据库系统概论)

千月星跡 5278
上一篇: 数据库系统概论——安全性
下一篇: Python——数据类型
SmallProgramer3121
博客等级 码龄11年 3粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值