【数据库系统概论】数据库恢复机制

系统文章目录

数据库的四个基本概念:数据、数据库、数据库管理系统和数据库系统
数据库系统的三级模式和二级映射
数据库系统外部的体系结构
数据模型
关系数据库中的关系操作
SQL是什么?它有什么特点?
数据定义之基本表的定义/创建、修改和删除
数据定义之索引的创建、修改与删除
数据查询之单表查询。详细解释WHERE、OEDER BY、GROUP BY 和 HAVING
关系的完整性(实体完整性、参照完整性、用户定义的完整性)
事务(包括事务的基本概念和特性解释)


  • 系统文章目录
  • 为什么要有数据库恢复机制
  • 恢复的实现技术
    • 数据转储
    • 登录日志文件
    • REDO(重做)和UNDO(撤销)
    • 具有检查点的恢复技术

为什么要有数据库恢复机制

当出现故障,造成事务在运行过程中被强行停止从而影响数据库中数据的正确性,使得数据库的状态不是正确的。这时就需要数据库恢复机制将数据库的状态恢复到某一已知的正确状态。

遇到故障后,数据库要么被破坏,要么数据不正确。

数据库恢复技术能够保证事务的一致性


恢复的实现技术

恢复的基本原理是:冗余。利用存储在系统别处的冗余数据来重建数据库中已被破坏或不正确的那部分数据。虽然恢复技术的基本原理很简单,但实现技术的细节确相当复杂。

恢复机制涉及的关键问题有两点:

  • 如何建立冗余数据
  • 如何利用这些冗余数据实施数据库恢复

建立冗余数据最常用的技术是数据转储和登录日志文件。通常这两个方法是一起用的。


数据转储

转储的含义:转储是指数据库管理员定期地将整个数据库复制到磁带、磁盘或其他存储介质上保存起来的过程。这些备用的数据文本称为后备副本(backup)。

恢复过程:数据库遭到破坏后可以将后备副本重新装入,重装后备副本只能将数据库恢复到转储时的状态,要想恢复到故障发生时的状态,必须重新运行自转储以后的所有更新事务。

转储过程:转储可以分为静态转储和动态转储。

  • 静态转储就是在转储的过程中系统不允许进行任何存取活动。优点是能得到数据一致性的副本,缺点在于会降低数据库的可用性,毕竟如果数据库很大,转储时间就很长,那么这段时间都不能对数据库进行操作的话,对于有些业务场景来说肯定是不能接受的。
  • 动态转储就是在储的过程中允许对数据库进行存取和修改。也就是说转储和用户事务可以并发执行。优点是不会影响新事务的运行,缺点是不能保证副本中的数据正确有效,比如在转储期间的某时刻Tc,系统把数据A=100转储到磁盘上,而在下一时刻Td,某一事务将A改为200,那么后备副本上的A就是过时的。解决方案是把动态转储期间各事务对数据库的修改活动登记下来,建立日志文件,这样后备副本加上日志文件就能把数据库恢复到某一时刻的正确状态。

登录日志文件

什么是日志文件:日志文件(log file)记录了事务对数据库的更新操作。

不同的数据库系统采用的日志文件格式并不完全一样。概括起来主要有两种格式:以记录为单位的日志文件和以数据块为单位的日志文件。

以记录为单位的日志文件的内容

  • 各个事务的开始标记(BEGIN TRANSACTION)
  • 各个事务的结束标记(COMMIT或ROLLBACK)
  • 各个事务的所有更新操作

以上共同构成日志文件中的一条记录。具体来说,每个日志记录的内容主要包括:

  • 事务标识(标明是哪个事务)
  • 操作类型(插入、删除或修改)
  • 操作对象(记录ID、Block NO.)
  • 更新前数据的旧值(对插入操作而言,此项为空值)
  • 更新后数据的新值(对删除操作而言, 此项为空值)

必须先写日志文件,后写数据库


REDO(重做)和UNDO(撤销)

恢复操作就是要撤销故障发生时未完成的事务,重做已完成的事务。


具有检查点的恢复技术

为什么:利用日志技术进行数据库恢复时,恢复子系统必须搜索日志,确定哪些事务需要重做,哪些事务需要撤销。一般来说会检查所有的日志记录,但是搜索整个日志将耗费大量的时间。其次有很多需要重做处理的事务实际上已经在数据库中执行了,然而恢复子系统又重新执行了这些操作,浪费了大量时间。为了解决这些问题,又发展了具有检查点(checkpoint)的恢复技术。这种技术在日志文件中增加检查点记录(checkpoint),增加一个重新开始文件,并让恢复子系统在登录日志文件期间动态地维护日志。

检查点记录的内容包括:建立检查点时刻所有正在执行的事务清单和这些事务最近一个日志记录的地址。

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

在这里插入图片描述

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

例如:

在这里插入图片描述

  • T1:在检查点之前提交
  • T2:在检查点之前开始执行,在检查点之后故障点之前提交
  • T3:在检查点之前开始执行,在故障点时还未完成
  • T4:在检查点之后开始执行,在故障点之前提交
  • T5:在检查点之后开始执行,在故障点时还未完成

恢复策略:

  • T3和T5在故障发生时还未完成,所以需要撤销(UNDO)
  • T2和T4在检查点之后才提交,它们对数据库所做的修改在故障发生时可能还在缓冲区中,尚未写入数据库,所以要重做(REDO)
  • T1在检查点之前已提交,所以不必执行重做操作

从上面这个例子中就能充分体会到什么叫恢复操作就是要撤销故障发生时未完成的事务,重做已完成的事务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/292998.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[论文笔记] Megtron_LM 0、报错:vscode调试无法传进去参数 launch.json文件获取args参数

解决方法: 配置好launch.json文件后,应该点运行和调试里面的运行按钮。而不是直接点文件右上角的debug。 可以看到terminal中,如果没有正常加载launch.json,则参数中没有args的参数。 如果正常加载,可以看到args的很多…

Mysql 重要知识点1(含面试题1)

Mysql 知识点较多,这里涵盖了基本知识点,包括SQL语句 、重要面试题等。后面还有几章Mysql的知识点,分别是刷题总结与进阶优化SQL 面试题等。 目录 Mysql 安装Mysql 重要知识点SQL 重要语句面试题精选 Mysql 安装 1.官网下载mysql5.7版本压缩…

@Scheduled定时任务现状与改进

项目场景: 定时任务现状:每个项目都会有一些配置信息,这些信息我们是都放在一个配置服务中,这个服务会定时从配置表中加载所有配置存入本地JVM内存,以供调用方获取(调用方集成了配置服务的SDK,…

PyTorch数据并行(DP/DDP)浅析

一直以来都是用的单机单卡训练模型,虽然很多情况下已经足够了,但总有一些情况得上分布式训练: 模型大到一张卡放不下;单张卡batch size不敢设太大,训练速度慢;当你有好几张卡,不想浪费&#xf…

设计模式 七大原则

1.单一职责原则 单一职责原则(SRP:Single responsibility principle)又称单一功能原则 核心:解耦和增强内聚性(高内聚,低耦合)。 描述: 类被修改的几率很大,因此应该专注…

Python处理音频

从video中抽取audio from moviepy.editor import VideoFileClip from pydub import AudioSegmentvideo_path /opt/audio/audios/video1.mp4 audio_path /opt/audio/audios/video1.wav # 提取的音频保存路径# 加载视频文件 video VideoFileClip(video_path)# 提取音频 audi…

华为DriveONE电机控制器拆解实拍

如果说之前的问界M5、M7,华为让我们看到其在智能化上确实拥有遥遥领先的能力,那么在智界S7上,则让我们看到华为在动力、底盘这些硬件执行层面,竟然也有不输给很多车企的实力。1、华为电驱,全球第一?在智界S…

如何使用Cloudreve+Cpolar搭建个人PHP云盘系统并发布公网可访问

文章目录 1、前言2、本地网站搭建2.1 环境使用2.2 支持组件选择2.3 网页安装2.4 测试和使用2.5 问题解决 3、本地网页发布3.1 cpolar云端设置3.2 cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了,各互联网大厂也纷纷加入战局&#…

微信小程序:flex常用布局

在我们平时微信小程序开发过程中为了页面能达到设计小伙伴的预期,追求还原度,那我们肯定会使用很多常用的布局方式,那我们今天就介绍一下微信小程序中常用的一些flex布局 1、常用flex布局 /** 水平垂直居中 **/ .flex-center {display: fle…

轻量化网络-MobileNet系列

整理备忘 目录 1. MobileNetV1 1.1 论文 1.2 网络结构 1.3 深度可分离卷积 1.4 计算量下降了 1.5 参数量下降了 2. MobileNetV2 2.1 论文 2.2 网络结构 2.3 效果 3. MobileNetV3 3.1 论文 3.2 网络结构 3.3 效果 1. MobileNetV1 1.1 论文 https://arxiv.org/a…

从0开始python学习-39.requsts库

目录 HTTP协议 1. 请求 2. 响应 Requests库 1. 安装 2. 请求方式 2.1 requests.请求方式(参数) 2.2 requests.request() 2.3 requests.session().request() 2.4 三种方式之间的关联 3. 请求参数 3.1 params:查询字符串参数 3.2 data:Form表单…

出现 No such instance field: ‘XXXX‘ 的解决方法

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 作为一个全栈的开发玩家,需要调试前后端的数据传输,方便发现问题所在! 在debug整个项目的时候,检查传输数据的时候,发现前端可以传输,但是后端一直拿不到 出现如下问题:No such instance field: parentModel 截图…

【git使用】了解三种git commit合并的使用场景(rebase、merge、cherry-pick)

参考 【Git学习笔记】逃不掉的merge和rebase-腾讯云开发者社区-腾讯云git merge 和 git rebase - 知乎git cherry-pick 教程 - 阮一峰的网络日志 简单理解各种合并的方法 线性合并,使用 rebase —— feature 分支开发,提交前拉取 master 最新改动进行…

Java Review - MapStruct_使用 Intellij 和 Maven Debug 分析MapStruct实现原理

文章目录 Java动态编译、JSR 269 和 MapStructJSR 269JSR 269的工作原理MapStruct示例 MappingProcessor调试编译期生成的代码 Java动态编译、JSR 269 和 MapStruct Java动态编译是指在运行时动态地将Java源代码编译成字节码并加载到Java虚拟机中执行。 JSR 269 是Java规范请求…

使用Kafka与Spark Streaming进行流数据集成

在当今的大数据时代,实时数据处理和分析已经变得至关重要。为了实现实时数据集成和分析,组合使用Apache Kafka和Apache Spark Streaming是一种常见的做法。本文将深入探讨如何使用Kafka与Spark Streaming进行流数据集成,以及如何构建强大的实…

Java面试题之集合篇

前言 本篇主要总结JAVA面试中关于集合相关的高频面试题。本篇的面试题基于网络整理以及自己的总结编辑。在不断的完善补充哦。欢迎小伙伴们在评论区发表留言哦! 1、基础 1.1、Java 集合框架有哪些? Java 集合框架,大家可以看看 《Java 集…

读算法霸权笔记11_微目标

1. 脸书 1.1. 一份请愿书属于脸书了,而社交网络的算法会对如何最大限度地利用这份请愿书做出判断 1.1.1. 脸书的算法在决定谁能看到我的请愿书时会把所有因素都考虑在内 1.2. 通过改变信息推送的方式,脸书研究了我们…

MATLAB全局最优搜索函数:GlobalSearch函数

摘要:本文介绍了 GlobalSearch 函数的使用句式(一)、三个运行案例(二)、以及 GlobalSearch 函数的参数设置(三、四)。详细介绍如下: 一、函数句法 Syntax gs GlobalSearch gs Glo…

java每日一题——输出星星塔(答案及编程思路)

前言: 打好基础,daydayup! 题目:请编写输出如下图的星星塔 编程思路:1,计算要输入几行;2,计算每行的⭐数量,及空格的数量;计算相应的关系; 如图:假…

【中小型企业网络实战案例 八】配置映射内网服务器和公网多出口、业务测试和保存配置

相关学习文章: 【中小型企业网络实战案例 一】规划、需求和基本配置 【中小型企业网络实战案例 二】配置网络互连互通【中小型企业网络实战案例 三】配置DHCP动态分配地址 【中小型企业网络实战案例 四】配置OSPF动态路由协议【中小型企业网络实战案例 五】配置可…