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

2023-11-13

事务是一系列的数据库操作,是数据库应用程序的基本逻辑单元。事务处理(transaction processing)技术主要包括数据库恢复技术和并发控制技术。

10.1 事务的基本概念

  1. 事务:是用户定义的一个数据库操作序列,是一个不可分割的工作单位(原子性)
    一般的,一个程序中被包含多个事务。如果用户没有显式的定义事务,则DBMS自动划分事务。
    事务一般以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。ROLLBACK表示回滚,系统将事务中对数据库的所有已完成的操作全部撤销,回滚到事务开始时的状态。

  2. 事务的ACID特性
    原子性:事务中的操作要么都做,要么都不做
    一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态
    隔离性:一个事物的执行不能被其他事务干扰,并发执行的各个事务之间不能互相干扰
    持续性:一个事务一旦提交,它对数据库中数据的改变就应该是永久性的

可能破坏事务ACID特性的因素有:
1. 多个事务并发运行时,不同事务的操作交叉执行
2. 事务在运行过程中被强行停止

10.2 数据库恢复概述

数据库的恢复:把数据库从错误状态恢复到某一已知的正确状态

10.3 故障的种类

  1. 事物内部的故障:只影响这个事物本身,一般是非预期的,如运算溢出、因为死锁被撤销等,解决方法是强行回滚,称为事务撤销
  2. 系统故障(软故障):造成系统停止运转的任何事件,使得系统重新启动。影响正在运行的所有事务,但不破坏数据库。
    解决方法:清除所有未完成的事务对数据库的所有更改。同时重做所有已提交的事务(因为这些已提交的事务可能还在缓冲区没写到磁盘上的物理数据库上)
  3. 介质故障(硬故障):指外存故障,如磁盘损坏
    解决方法:备份
  4. 计算机病毒:产生故障的原因,本身不是故障,可能产生故障2或3

10.4 恢复的实现技术

建立冗余数据:
1. 数据转储
2. 登记日志文件

10.4.1 数据转储

静态转储:系统中无运行事务时进行的转储,转储期间不允许任何事务执行。
优点:得到的一定是一个数据一致性的副本
缺点:降低了数据库的可用性

动态转储:转储和用户事务可以并发执行
优点:系统可用性较好
缺点:转储得到的副本不一定一致,因此必须建立日志文件等级转储期间各事务对数据库的修改活动

海量转储:每次转储整个数据库,恢复更方便
增量转储:每次只转储上一次转储后更新过的数据,恢复较复杂

这里写图片描述

10.4.2 登记日志文件

  1. 日志文件的格式和内容
    两种格式:以记录为单位/以数据块为单位
    需要登记的内容:
    这里写图片描述

  2. 日志文件的作用:
    事务/系统故障恢复必须用日志文件
    动态转储必须建立日志文件,后备副本和日志文件结合才能有效地恢复
    静态转储中:
    这里写图片描述

  3. 登记日志文件的两条原则
    登记的次序按并发事务执行的时间次序
    必须先写日志文件,后写数据库

10.5 恢复策略

10.5.1 事务故障的恢复

系统自动完成的,对用户是透明的
恢复步骤:
1. 反向扫描日志文件,查找该事务的更新操作
2. 对该事务的更新操作执行逆操作
3. 重复12,直至读到此事务的开始标记

10.5.2 系统故障的恢复

系统在重新启动时自动完成的,不需要用户干预
恢复步骤:
1. 正向扫描日志文件,找出故障发生前已经提交的事务(有BEGIN有COMMIT),记入重做事务。同时找出未完成的事务(只有BEGIN),加入撤销队列
2. 对撤销队列中的事务进行撤销处理:反向扫描并执行逆操作
3. 对重做队列中的各个事务进行重做处理:正向扫描并重做

10.5.3 介质故障的恢复

恢复方法:
1. 装入最新的数据库后备副本,对于动态转储还需同时装入转储开始时刻的日志文件副本
2. 装入相应的日志文件副本(转储结束时刻的日志文件副本),重做已完成的事务

10.6 具有检查点的恢复技术

检查点记录的内容:
- 建立检查点时刻所有正在执行的事务清单
- 这些事务最近一个日志记录的地址
这里写图片描述
这里写图片描述
- 重新开始文件记录检查点记录
- 检查点记录里面记录活跃的事务:T1T2,以及它们的最后日志记录D1D2

恢复方法:
这里写图片描述

清理日志文件:在重新开始文件里面找到上一个与当前检查点没有相同的活跃事务的检查点,那么它之前的日志记录都可以删掉

日志刷出去了以后系统故障:没问题,因为这个检查点还没写到重新开始文件上,写重新开始文件是最后一步

10.7 数据库镜像

用途:
1. 介质故障时将应用迁移到镜像数据库,使数据库可以继续使用,同时恢复著数据库
2. 提供系统并发访问

实际应用中用户往往只对关键数据和日志文件进行镜像

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

《数据库系统概论》 第十章 数据库恢复技术 的相关文章

  • 微信分享引导页效果

    span style font size 18px span
  • java的rmi

    写在前面 本文看下如何通过Java原生提供的rmi功能来调用远端JVM对象的方法 并获取其结果 1 定义远端service pojo 使用了lombok Getter Setter ToString public class User im

随机推荐

  • 在较新版pycharm中使用conda虚拟环境的两种方法-保姆级教程

    文章目录 方法一 配置解释器 方法二 命令行直接调用 注意事项 方法一 配置解释器 首先创建new project 之后等待配置索引等文件即可 方法二 命令行直接调用 在终端terminal中直接使用conda activate xxx 但
  • 计算机网络工程毕业设计题目选题大全

    文章目录 0 简介 1 如何选题 2 最新网络工程选题 2 1 Java web SSM 系统 2 2 大数据方向 2 3 人工智能方向 2 4 其他方向 4 最后 0 简介 学长搜集分享最新的网络工程专业毕设毕设选题 难度适中 适合作为毕
  • js复制一个对象的方法,不改变原对象

    复制一个对象 不改变原对象简单方法如下 var obj a 1 b 2 es6新方法 Object assign var newObj Object assign obj es6新方法 扩展运算符 var newObj obj 有个弊端 就
  • 什么是网络编程?

    目录 一 UDP DatagramSocket DatagramPacket 服务器 客户端 二 TCP ServerSocket Socke 服务器 客户端 网络编程指的就是网络上的主机通过不同的进程 以编程的方式实现网络信息传输 而提到
  • CSDN如何调节成黑色主题,手把手教学

    今天师弟来问我 有没有把浏览器调节成黑色主题的东东 每天看网页很久 白色太刺眼了 作为未来的新晋程序员 也显得不专业 想到自己有个插件 就分享了出来 获得好评 有需求的地方就有分享 首先上效果图 随便打开一篇文章看一看 教程 首先 要用谷歌
  • 5G技术详解系列-PDU会话签约数据(6)

    相关文章会在公众号同步更新 公众号 5G通信大家学 持续更新的相关5G内容都是直接根据3GPP整理 保证更新内容的准确性 避免通过二手 甚至多手的资料 以讹传讹误导网友 在介绍完流程详解后 会整理专题内容 比如切片 服务发现 QoS流端到端
  • 我的世界java版怎么加整合包_我的世界Minecraft Mod(模组)安装指南

    前言 Mod的安装方法主要分为核心Jar文件手动覆盖安装和使用Forge加载 现在大多数的Mod基本都是依赖于Forge来加载Mod 不过对于刚接触我的世界的玩家来说 在安装Mod的时候也是一头雾水 导致安装Mod后 出现诸如游戏崩溃 黑屏
  • 【从零开始的Java开发】1-6-2 泛型:概述、泛型作为方法参数、自定义泛型、自定义泛型方法

    文章目录 泛型概述 泛型作为方法参数 自定义泛型 一个参数 两个参数 自定义泛型方法 总结 泛型概述 为什么要有泛型 在Java增加泛型之前 泛型程序设计使用继承来实现 坏处 需要强制转换 可向集合中添加任意类型的对象 存在风险 泛型的使用
  • 主干光缆线路的组网结构

    主干光缆是指连接主干光交与业务汇聚节点 以及主干光交之间的光缆 业务汇聚点指安装了OLT设备的节点 主干光交内的业务端口与业务汇聚点ODF间的光纤链路部分或全部是直连的 中间没有活动连接 主干光缆线路的组网结构一般分为 环形 树形和星形 1
  • 嵌入式Linux设备读取CPU温度的方法

    1 ARM 平台下 cat sys devices virtual thermal thermal zone0 temp62374 cat sys class thermal thermal zone0 temp 64036x86 平台下
  • vue项目配置rem移动端适配

    一 项目介绍 脚手架CLI vue cli Vue版本 2 6 11 移动UI组件库 Vant 2 10 14 CSS预处理器 sass 二 配置lib flexible插件 下载插件 npm i D lib flexible 导入 在sr
  • 据说,80%的人都搞不懂哈希算法 区块链 哈希算法

    本文约9000字 阅读 观看 需要52分钟 聊到区块链的时候也少不了会听到 哈希 哈希函数 哈希算法 是不是听得一头雾水 别急 这一讲我们来讲讲什么是哈希算法 哈希是一种加密算法 哈希函数 Hash Function 也称为散列函数或杂凑函
  • 车辆贷款违约预测

    1 案例介绍 国内某贷款机构的车贷业务面临借款人拖欠还款或拒不还款 导致该机构的不良贷款率居高不下的问题 该机构将部分贷款数据开放 诚邀大家帮助他们建立风险识别模型来预测可能违约的借款人 敏感信息已脱敏 给定某机构实际业务中的相关借款人信息
  • 数据库的4种隔离级别

    数据库事务的隔离级别有4种 由低到高分别为Read uncommitted Read committed Repeatable read Serializable 而且 在事务的并发操作中可能会出现脏读 不可重复读 幻读 下面通过事例一一阐
  • kafka 使用python消费consumer

    参考 python kafka 使用 大数据 kafka常见问题 kafka python之操作kafka Kafka基本了解 使用python读取consumer中的数据 安装kafka python pip install kafka
  • 常用邮箱、网盘地址列表

    常用邮箱 网盘地址列表 常用邮箱列表 126邮箱 http www 126 com Yeah邮箱 http www yeah net 雅虎邮箱 http mail cn yahoo com 新浪邮箱 http mail sina com c
  • Python Performance Matters

    Python Performance Matters cmd 不要重复定义数据类型 yappi cpu yappi cpu by Emery Berger Strange Loop 2022 cmd python3 m cProfile 不
  • 读书笔记2

    深度学习入门 基于Python的理论与实现 高清中文版 pdf 1 python基础 numpy matplotlib Batch Normalization Dropout Adam 图像识别 自然语言处理 语音识别 不闻不若闻之 闻之不
  • 经典始终是经典,从理论到实践的Java并发编程实战笔记

    并发编程式Java语言的重要特性之一 当然也是最难以掌握的内容 编写可靠的并发程序是一项不小的挑战 但是 作为程序员的我们 要变得更有价值 就需要啃一些硬骨头了 例如理解并发编程的基础理论和编程实践 今天给小伙伴们带来了一份Java并发编程
  • 《数据库系统概论》 第十章 数据库恢复技术

    事务是一系列的数据库操作 是数据库应用程序的基本逻辑单元 事务处理 transaction processing 技术主要包括数据库恢复技术和并发控制技术 10 1 事务的基本概念 事务 是用户定义的一个数据库操作序列 是一个不可分割的工作