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

2023-11-13

1、事务的概念及其特性,恢复技术能保证事务的哪些特性?

事务是用户定义的一个数据库操作序列,这些操作要么全做、要么全不做,是一个不可分割的工作单位。

事务具有4个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持续性(Durability)。这4个特性也简称ACID特性。

原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。

一致性:事务执行的结构必须是使数据库从一个一致性状态变到另一个一致性状态。

隔离性:一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能相互干扰。

持续性:也称永久性(permanence),指一个事务一旦提交,它对数据库中的数据的改变就是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。

故障恢复可以保证事务的原子性和持续性。

2、为什么事务非正常结束时会影响数据库数据的正确性?

事务执行的结构必须是使数据库从一个一致性状态变到另一个一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就可能处于不正确的状态,或者是不一致的状态。

3、登记日志文件时为什么必须先写日志文件,后写数据库?

把对数据库的修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只完成了一个。

如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,在恢复时只不过是多执行一次UNDO操作,并不会影响数据库的正确性。所有一定要先写日志文件,即首先把日志文件记录写到日志文件中,然后写数据库的修改。

4、针对不同的故障,试给出恢复的策略和方法。(即如何进行事务故障的恢复、系统故障的恢复,以及如何进行介质故障恢复。)

①事务故障的恢复步骤:

   ⅰ反向扫描文件日志,查找该事务的更新操作。

   ⅱ对事物的更新操作执行逆操作。即将日志记录中“更新前的值”写入数据库。

    直到读到此事务的开始标记,该事务故障的恢复就完成了。

②系统故障的恢复步骤:

   ⅰ正向扫描日志文件,找出故障发生前已经提交的事务队列(REDO队列)和未完成的事务队列(UNDO队列)。

   ⅱ对未完成的事务队列的各个事务进行UNDO处理。

   ⅲ对已经提交的事务队列中的各个事务进行REDO处理。

③介质故障的恢复步骤:

   ⅰ装入最新的数据库后备副本(离故障发生时刻最近的转储副本),使数据库恢复到最近一次转储时的一致性状态。

   ⅱ装入转储结束时刻的日志文件副本。

   ⅲ启动系统恢复命令,由DBMS完成恢复功能,即重做已完成的事务。

5、什么是检查的记录,其包括哪些内容?

检查点记录是一类新的日志记录。它的内容包括:

①建立检查点时刻所有正在执行的事务清单;

②这些事务的最近一个日志记录的地址;

6、具有检查点的恢复技术有什么优点?

利用日志技术进行数据库恢复时,恢复子系统必须搜索整个日志,这将耗费大量的时间。此外,需要REDO处理的事务实际上已将其更新操作结构写到数据库中,恢复子系统又重新执行了这些操作,浪费了大量时间。检查点技术就是为了解决这些问题。

例如:

在采用检查点技术之前,恢复时需要从头扫描日志文件,而利用检查点技术只需要从Tc开始扫描日志,这就缩短了扫描日志的时间。

事务T3的更新操作实际上已经写到数据库中了,进行恢复时就没必要再进行REDO处理,采用检查点技术做到了这一点。

7、使用检查点方法进行恢复的步骤:

①在重新开始文件中,找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录。

②由该检查点记录得到的检查点建立时刻所有正在执行的事务清单ACTIVE-LIST。

这里建立两个事务队列:

UNDO-LIST:需要执行undo操作的事务集合;

REDO-LIST:需要执行redo操作的事务集合。

把ACTIVE-LIST暂时放入UNDO-LIST队列,REDO队列暂时为空。

③从检查点开始正向扫描日志文件

如有新开始的事务Ti,把Ti暂时放入UNDO-LIST队列;

如有提交的事务Tj,把Tj从UNDO-LIST队列移到REDO-LIST队列,直到日志文件结束。

④对UNDO-LIST中的每个事务执行UNDO操作,对REDO-LIST中的每个事物执行REDO操作。

8、什么是数据库镜像?它有什么用途?

数据库镜像即根据DBA的要求,自动把整个数据库或者其中的部分关键数据复制到另一个磁盘上。每当主数据库更新时,DBMS自动把更新后的数据复制过去,即DBMS自动保证镜像数据与主数据的一致性。

数据镜像的用途:

①用于数据库恢复。当出现介质故障时镜像磁盘可继续使用,同时DBMS自动利用镜像磁盘数据进行数据库的恢复,不需要关系系统和重装数据库副本。

②提供数据库的可用性。在没有出现故障的情况下,当一个用户对某个数据加排他锁进行修改时,其他用户可以°镜像数据库上的数据而不必等待该用户释放锁。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库系统概论-数据库恢复技术 的相关文章

  • MySQL数据库定时备份脚本

    bin bash 定义备份用户 密码 DbUser root DbPasswd NTQ12377 定义备份数据库 DbName zabbix jumpserver openfire n9e n9e v5 ibex 定义备份目录 Path d
  • 手把手带你编写微信公众号

    这是一个简单的项目 简单编写微信公众号 扫码关注 关注 即可提高学习效率 Peace 实时查询城市天气 回复 美女视频网站 观看美女视频 不定时推送小姐姐视频和图片合集 Docker线上部署SpringBoot 如果您不知道如何开始编写的话
  • ajax中设置contentType: “application/json”的作用

    最近在做项目交互的时候 刚开始向后台传递数据返回415 后来百度添加了 contentType application json 之后返回400 然后把传输的数据格式改为json字符串就传输成功了 现在我们来看看 contentType a
  • Keras-训练网络时的问题:loss一直为nan,accuracy一直为一个固定的数

    目录 问题描述 问题的解决 调整学习率后解决问题 其他可能导致此问题的原因 1 2 3 4 关于如何选择学习率 问题描述 在使用VGG19做分类任务时 遇到一个问题 loss一直为nan accuracy一直为一个固定的数 如下输出所示 即
  • ESP32-C3入门教程 网络 篇(三、 MQTT 协议基础介绍及测试)

    在前面 我们已经学会了 ESP32 C3 的WiFi 配置以及使用 为我们学习网络协议建立了基础 这篇文章我们就来学习测试一下ESP32 C3 的 MQTT 驱动 目录 前言 1 基础介绍 1 1 MQTT协议基本概念 1 2 ESP MQ
  • c#实现循环输入商品编号和购买数量,结账时应付金额并找零

    循环输入商品编号和购买数量 系统自动计算每种商品的价钱 单价X数量 并累加总金额 当输入n时结账 假设享受8折优惠 结账时 根据折扣计算应付金额 输入实付金额 并找零 下面展示一些 内联代码片 使用c 实现 代码如下 An highligh
  • 【数据压缩3】AVI文件格式分析及问题回答+WAV文件格式分析

    目录 AVI文件问题回答 1 AVI文件音频和视频的数据是如何放置的 交织放置还是连续放置 2 AVI文件一个视频帧大约占据多少字节 一个音频数据块大约占用多少字节 WAV文件格式分析 文件概述 文件格式 RIFF区块 FORMAT区块 D
  • 数据结构——根据后序遍历结果和中序遍历结果画出二叉树

    根据二叉树的中序和后序遍历结果画出二叉树 1 首先根据后序遍历结果判断根节点 最右边的元素 2 在中序遍历结果中找到该根节点 该节点的左边为根节点的左子树 节点右边为根节点的右子树 3 回到后序遍历中找点左子树在后序遍历中最右边的元素即为左
  • FPGA学习方向规划

    前言 仅以本帖 记录自己的学习历程及未来的方向 刚入职做FPGA研发1年 也不知道自己的发展方向 所以 从FPGA接口通信入手 慢慢学习和了解吧 希望自己逐步积累和掌握以下几个方向从业的基础知识 并具有一定的研发能力 主要方向分以下个方向
  • Binning模式缩小分辨率

    示例 640 480 NV12图像 提取Y部分数据 将Y数据做降采样 隔行隔列取值 保存成文件 include
  • React + antd实现嵌套可增减表单

    技术栈 React antd 接到需求 做一个form嵌套表单 刚开始想自己做一个 后来想着参数处理可能比较麻烦就直接用antd的Form吧 一 目标效果 先看一下效果图 其中点击新增标签及配置时可以加一个红色框里的内容 点击蓝框里的加号可

随机推荐

  • 将 VEDAI 遥感图像数据集转为 PASCAL VOC 格式

    PASCAL VOC 格式的 VEDAI 数据集 只有JPEGImages和Annotations 地址 所需积分 C币 0 VEDAI 数据集共有11类 类别和所对应的 label 如下表所示 类别 car truck tractor c
  • 使用python抓取天涯帖子,并实现“只看楼主”功能

    使用python抓取天涯帖子 并实现 只看楼主 功能 在看天涯论坛时 有些帖子很有价值 想把它保存下来 可是好的帖子动辄几百页 其中又掺杂了很多灌水和撕逼 所以我编写了一个python小程序 将一个帖子中楼主所发的内容抓取下来 挺好用的 唯
  • TypeScript入门总结

    一 类型注解 如 number是类型注解 具体分为 原始类型 数组类型2 联合类型 类型别名type 交叉 keyof 获取key字面量 函数类型2 void不确定函数返回值 可选参数 不确定参数 对象类型 字面量类型 类似const 接口
  • Linux文件误删除恢复操作

    本文参考http write blog csdn net postedit ticket ST 491405 OGjDDusZeyMgVQ7bHW7f passport csdn net 前言 作为一个多用户 多任务的操作系统 Linux下
  • 将mysql中的数据移到另一个数据库中

    1 导出整个数据库 mysqldump u 用户名 p 数据库名 gt 导出的文件名 mysqldump u admin p vmiplatform gt sql sql 运行结果如下 2 导出一个表 mysqldump u 用户名 p 数
  • 解决node里面的中文乱码

    今天咋学习node的时候 跟着视频里在撸代码 但是却出现了中文乱码的情况 视频中的谷歌浏览器可能和我的版本不一致 先看代码吧 use strict const http require http let count 0 const serv
  • linux系统中文件名通配符的使用方法

    linux系统中文件名通配符的使用方法 常用的四种 匹配任意字符 匹配任意单个字符 指定范围的匹配 e g a z 0 9 a zA Z 不匹配通配符内的信息 e g a Z
  • 继承的详解

    继承 继承基础 继承方式 继承中的对象模型 继承中构造和析构顺序 继承同名成员处理方式 继承同名静态成员处理方式 多继承语法 菱形继承 继承基础 继承得好处 减少重复代码 语法 class 子类 继承方式 父类 子类也称为 派生类 父类也称
  • java底层实现定时延时的途径

    Timer定时器 时间间隔示意 例子一 public class TestTimer private static Timer timer new Timer private static Logger logger LoggerFacto
  • (转载)Twain 学习纪录

    一 TWAIN的文件组成 TWAIN共包括4个二进制文件 如果要使用该接口 就必须要保证他们被成功地安装在本地计算机上 文 件 名 说 明 TWAIN 32 DLL 32位应用程序的支持文件 32位程序使用TWAIN通讯必须使用该文件 TW
  • java 各省市区代码表

    因最近项目开发需要用到全国各省市区的城市编码 网上找了好久 终于找到了非常全的 现记录一下 方便以后使用 DROP TABLE IF EXISTS region CREATE TABLE region id int 10 NOT NULL
  • OpenCL-学习教程(二)

    经过两天的摸爬滚打 基本上了解了opencl的并行处理的原理和内部调用机制 也上手写代码调试了几个工程 总体感觉opencl会比cuda比起来更复杂一些 但不得不说 平台的兼容性更好 而且调试应该方便些 虽然我的VS调试配置环境始终有问题
  • python的itchat模块

    今天一不小心发现的python的好玩模块itchar 首先 安装 pip install itchat 1 搜索微信好友信息 import itchat itchat auto login hotReload True 登入 friends
  • MTK 调试记录

    MT8788 MT8183 使用CC1 CC2做OTG检测 CONFIG MTK USB TYPEC U3 MUX 关闭 打开一下宏 CONFIG TCPC CLASS y CONFIG TCPC MT6370 y CONFIG MTK U
  • 常见等价无穷小

    当 x 0 时 等 价 无 穷
  • c++stl和std_std :: replace()函数以及C ++ STL中的示例

    c stl和std C STL std replace 函数 C STL std replace function replace function is a library function of algorithm header it
  • IntelliJ IDEA的项目配置和创建项目(四)

    一 配置JDK 按 Ctrl Shift Alt S 快捷键就会弹出项目配置区 如下图 第一个红色区域是配置JDK的地方 第二个红色区域指的是项目编译后输出的路径 如果要设置Modules项目的jdk 那么可以在这一行设置 二 创建项目 创
  • MyBatis-Plus 官方文档

    myBatis plus 官方文档 https mp baomidou com
  • VUE父组件监听$emit事件,如何传递多个父组件自己的参数

    背景 子组件可以通过this emit change parm value1 parm2 value2 传递多个参数 父组件监听事件传参有两种方式 方式1 父组件自己无参数 方法名可以不用带参数 函数中的e代表change事件的对象 直接获
  • 数据库系统概论-数据库恢复技术

    1 事务的概念及其特性 恢复技术能保证事务的哪些特性 事务是用户定义的一个数据库操作序列 这些操作要么全做 要么全不做 是一个不可分割的工作单位 事务具有4个特性 原子性 Atomicity 一致性 Consistency 隔离性 Isol