软考:中级软件设计师:数据库恢复与备份,故障与恢复,反规范化
软考:中级软件设计师:数据库恢复与备份
提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性
关于互联网大厂的笔试面试,都是需要细心准备的
(1)自己的科研经历,科研内容,学习的相关领域知识,要熟悉熟透了
(2)自己的实习经历,做了什么内容,学习的领域知识,要熟悉熟透了
(3)除了科研,实习之外,平时自己关注的前沿知识,也不要落下,仔细了解,面试官很在乎你是否喜欢追进新科技,跟进创新概念和技术
(4)准备数据结构与算法,有笔试的大厂,第一关就是手撕代码做算法题
面试中,实际上,你准备数据结构与算法时以备不时之需,有足够的信心面对面试官可能问的算法题,很多情况下你的科研经历和实习经历足够跟面试官聊了,就不需要考你算法了。但很多大厂就会面试问你算法题,因此不论为了笔试面试,数据结构与算法必须熟悉熟透了
秋招提前批好多大厂不考笔试,直接面试,能否免笔试去面试,那就看你简历实力有多强了。
(5)考网警的大佬,务必把软考:中级软件设计师的内容学好学透,学广,学多
文章目录
- 软考:中级软件设计师:数据库恢复与备份
- @[TOC](文章目录)
- 软考:中级软件设计师:数据库恢复与备份
- 数据库的故障,与恢复
- 基于日志的恢复机制
- 逆规范化技术
- 总结
文章目录
- 软考:中级软件设计师:数据库恢复与备份
- @[TOC](文章目录)
- 软考:中级软件设计师:数据库恢复与备份
- 数据库的故障,与恢复
- 基于日志的恢复机制
- 逆规范化技术
- 总结
软考:中级软件设计师:数据库恢复与备份
很重要,2022网警就考了

具体操作是重点。

完全备份之后变化的数据——差量备份
要回
要恢复,全部走一遍
不管完全,还是差量,之后变化的数据——增量备份

恢复只看前一天

日志文件,记录了我们操作的过程
一旦故障出现,我们再看日志,把操作规范
数据库的故障,与恢复

2022网警考试中就问你外存被破坏了,请你恢复数据库
爆炸,当时就不会玩
我现在查一波
1.识别 / 定位故障
之一步是找到故障源。数据库介质故障可能有很多种不同的情况,
包括但不限于硬盘故障,内存错误或软件故障等。
当确定了故障源后,就可以采取相应的应对措施进行逐步处理。
2.备份和恢复
如果有完整的备份,则可以使用备份数据库来重新构建数据库。
备份可以是完整的备份,增量备份或差异备份。
使用备份进行恢复时,需要确保备份是最近的可用备份,并考虑到备份的完整性和一致性。
此外,需要验证备份是否可以成功恢复,以及检查备份中丢失了多少数据,然后考虑如何处理这些缺失的数据。
3.尝试修复介质
如果介质故障是硬件问题,则可以尝试对其进行修复,以便可以使用硬件设备继续访问介质。
在这种情况下,可能需要考虑更换故障设备。
通常情况下,管理员会使用工具程序,如 CHKDISK 等来检查硬盘,以了解硬盘的健康状况。
如果发现硬盘有问题,则可以使用硬盘工具来修复它,如 Spinrite 等。
4.数据库恢复
如果数据库中出现故障,可以尝试使用磁盘工具,如 DBCC (SQL Server 数据库),
来修复数据库和表之间的一致性错误和引用损坏。
此外,还可以考虑将数据移动到新的磁盘上,以便及时修复引起问题的磁盘。
在数据库存在转储文件的情况下,可能还可以考虑使用转储文件来手动恢复数据库。
5.数据库恢复 / 校验工具
在尝试恢复时,可能使用特定的数据库恢复或校验工具来帮助找到丢失或损坏的数据并尝试恢复它们。这些工具可以是开源的或专有的,因此,选择适合自己环境和情况的工具是必不可少的。
例如,TestDisk 是一种流行的开源工具,可以帮助找回丢失的文件系统和分区,并修复损坏的分区表和引导记录。
通过识别和定位故障源,备份和恢复,尝试修复介质,数据库恢复,和使用特定的数据库恢复 / 校验工具,
可以从数据库介质故障中进行恢复。
当数据库发生故障时,采取快速,恰当的补救措施,将有助于保护所存储的数据,减少数据损失,
并避免在恢复过程中出现更大的问题。
同时,也需要注意预防这些故障发生,以确保数据库始终处于更佳状态。
这些当年我都没有打出来,分低,名字不够被刷了,可惜
基于日志的恢复机制
常用的三种日志类型
undo 日志
redo 日志
undo/redo 日志
undo 日志及其恢复机制
日志文件更新数据的日志记录格式:
<T, op, x, v>:
op: 更新操作类型
x: 被更新的数据对象
v: x更新前的取值 (原值)
2.1 创建 undo 日志记录的规则
数据元素更新时,先把日志记录写入磁盘,后把更新数据写入磁盘。提交事务前,则先把所有更新数据写入磁盘,后立即把 记录写入磁盘。
写日志 => 更新数据 => commit
2**.2 undo 日志的动态检查及其使用**
① 设置检查点的规则:
在某些事务开始时,写日志记录 <START CRPT(T1,…,TK)>,并刷新日志记录。
等待事务的提交或终止,在此期间可以有其它是事务 Tj 开始;
当 T1,…,TK 提交或终止后,写 End CKPT<T1,TK>,并刷新日志。
在这里插入图片描述
eg:
② 利用检查点恢复数据库策略:
(1) 从故障点起,逆向扫描日志文件,以便确定故障发生时没有完成的事务。
若逆向扫描过程中,首先遇到 , 则没有完成的事务T,必定没有相应的 记录,且最早位于下列区间

若逆向扫描过程中,首先遇到 <START CKPT(T1,…Tk)>,则未完成的事务 Tj 没有相应的 记录,且最早位于下列区间:

redo 日志及其恢复机制
3.1 日志文件更新数据的日志记录格式:
<T, op, x, w>:
op: 更新操作类型
x: 被更新的数据对象
w: x更新后的取值 (新值)
3.2 创建 REDO 日志记录的规则
数据更新时,先把所有记载数据更新的日志记录和 记录写入磁盘,后才把更新数据写入磁盘(先写日志,后写数据)。
3.3 恢复原则:重做已经提交的事务。
3.4 利用 redo 日志进行恢复
写日志记录 <STATRT CKPT(Tj,…,Tk)>,并刷新日志记录;
将写 <START CKPT(Tj,…,Tk)> 日志记录时,缓冲区中所有已经提交,但未写入磁盘的数据库更新操作,完成写盘操作。
写入 日志记录,并刷新日志记录。

(2) 利用 REDO 日志恢复数据库类型
从故障点起,逆向扫描日志,以确定回复故障时需要重做的已提交事务:
若逆向扫描过程中,首先遇到 , 则需要重做的事务时 Tr ∈ ({Tj} ∪ {T1,…,Tk}),且 Tr 必须是存在 记录的事务

若逆向扫描过程中,首先遇到 <START CKPT(Ti)>,则应继续扫描,直到另一 <START CKPT(Ts)> 为止(它必有对应的 ).则需要重做的事务时 Tr ∈ ({Tj} ∪ {T1,…,Tk}),且 Tr 必须是存在 记录的事务

7. redo 和 undo 区别
Undo日志记录某数据被修改前的值,可以用来在事务失败时进行rollback;
Redo日志记录某数据块被修改后的值,可以用来恢复未写入data file的已成功事务更新的数据。
undo:
写盘顺序:数据元素更新时,先把日志写入磁盘,后把更新的数据写入磁盘。提交事务前,先把所有更新数据写入磁盘,后立即把 写入磁盘。
恢复原则: 进行恢复时,从后向前扫描日志,遇到有 commit 的事务忽略,没有 commit 的事务将对数据库的更新进行撤销。
设置检查点规则:事务开始时,写日志记录 <START CKPT(T1,…,Tk)>,并刷新记录 (FLUSH LOG); 等待事务提交或终止;当 T1,…,Tk 提交或终止后,写 <END CKPT(T1,…,Tk)>,并刷新日志。
redo:
写盘顺序: 数据元素更新时,先把更新的日志记录和 写入磁盘;后才把更新数据写入磁盘。(先写日志,后写数据)
恢复原则: 重做已经提交的事务。
设置检查点规则:写日志 <START CKPT(T1,…,Tk)>,并刷新日志记录;将写 <START CKPT(T1,…,Tk)> 时,缓冲区中所有已经提交但未写入磁盘的数据库更新操作,完成写盘操作;写入 日志记录,并刷新纪录。(数据先更新,然后设置检查点,结束检查点,数据提交到磁盘)
基于 undo/redo 日志的恢复机制
<T, op, x, v, w>:
op: 更新操作类型
x: 被更新的数据对象
v: x更新前的取值 (原值)
w: x更新后的取值 (新值)
3.1 创建 undo/redo 日志记录的规则:
数据元素更新时,先把数据更新日志记录写入磁盘。 记录可以在磁盘上数据库元素的修改之前或之后。
3.2 恢复原则:重做已经提交的事务,撤销没有做完的事务。
3.3 设置检查点规则:
写入 START CKPT(T1,…,Tk),并刷新日志记录;
把所有缓冲区的更新数据写入磁盘;
写入 END CKPT,并刷新日志记录;
3.4 恢复策略:
故障点起逆向扫描,确定需要重做和撤销的事务;
重做 COMMIT 的事务,逆向撤销没有 COMMIT 的事务;
逆规范化技术
物极必反

表太多,慢慢连接,贼慢
增加冗余链,就是逆向规范化
为了方便,就直接搞一个派生冗余,增加总额,以空间换时间
加成绩表,直接看人的乘积,性别和课程放进去,反正实用才行。
组表要 考虑查询速度快。
方便
直接明了‘’
总结
提示:重要经验:
1)
2)
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。
相关文章:
软考:中级软件设计师:数据库恢复与备份,故障与恢复,反规范化
软考:中级软件设计师:数据库恢复与备份 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准备…...
Unbutu系统-Docker安装、JDK环境配置,Docker常用指令、Docker安装MySQL、Redis、Tomcat、Nginx,前端后分离项目部署
目录 1、防火墙 1.1、查看防火墙状态 1.2、开启防火墙 1.3、关闭防火墙 1.4、重启防火墙 1.5、查看防火墙版本 2、安装JDK 2.1、官网下载tar包 2.3、解压tar.gz文件 2.4、配置环境变量 2.4.1、查看安装路径 2.4.2、设置环境变量 2.4.3、执行该让环境变量生效 2.4…...
Python绘图系统10:在父组件中使用子组件的函数
文章目录 Combobox绑定事件互相调用源代码 Python绘图系统: 📈从0开始实现一个三维绘图系统自定义控件:坐标设置控件📉坐标列表控件📉支持多组数据的绘图系统图表类型和风格:散点图和条形图📊混…...
【Linux的成长史】Linux的发展史
🎬 博客主页:博主链接 🎥 本文由 M malloc 原创,首发于 CSDN🙉 🎄 学习专栏推荐:LeetCode刷题集 数据库专栏 初阶数据结构 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如…...
OLED透明屏是什么?什么叫做OLED透明屏的原屏?
OLED透明屏是一种新型的显示技术,具有高对比度、高亮度和能耗低等优势,正被越来越广泛地应用于各个领域中。 在OLED透明屏中,原屏是至关重要的元件之一。本文将深入探讨OLED透明屏原屏的意义、制造过程、品质要求、应用案例和发展趋势&#…...
Redis 持久化的手段有哪些 ?RDB 和 AOF 有什么区别 ?
目录 1. Redis 持久化的手段有哪些 2. RDB 和 AOF 有什么区别 2.1 RDB 持久化 2.2 AOF 持久化 2.2.1 AOF 持久化策略有哪些 3. 混合持久化是如何执行的(了解) 1. Redis 持久化的手段有哪些 Redis 持久化的手段有三种: 快照方式&#…...
【Vue】vue2预览显示quill富文本内容,vue-quill-editor回显页面,v-html回显富文本内容
文章目录 前言一、下载二、使用步骤1.引入样式2.html代码 总结 前言 提示:这里可以添加本文要记录的大概内容: vue后台框架,若依系统里有一个富文本编辑器,效果如下 在package.json里面查看,发现插件名叫quill 插件的…...
华纳云:ubuntu下nginx服务器如何配置
在Ubuntu操作系统上配置Nginx服务器涉及以下步骤。这里我将提供一个基本的配置示例,你可以根据自己的需求进行修改和定制。 安装 Nginx: 打开终端,并输入以下命令来安装 Nginx: sudo apt update sudo apt install nginx 启动 …...
PTP时间同步例程
下面是一个基本的PTP时间同步例程,可以使用Arduino或其他类似的微控制器实现: 步骤1:准备硬件 - 一个Arduino或类似的微控制器 - 一个以太网模块 步骤2:导入库文件 #include <Ethernet.h> #include <EthernetUdp.h>…...
【ES6】ES6遍历属性的方法
在ES6中,有几种遍历属性的方法,其中包括: 使用for…in循环和Object.keys()方法。 let obj {a: 1, b: 2, c: 3}; for (let key in obj) {console.log(obj[key]); }使用for…of循环和Object.values()方法。 let obj {a: 1, b: 2, c: 3}; f…...
【Web系列二十四】使用JPA简化持久层接口开发
目录 环境配置 1、引入依赖 配置文件 代码编写 实体类创建 JPA常用注解 Service与ServiceImpl Service ServiceImpl Controller Dao 三种实现Dao功能方式 1.继承接口,使用默认接口实现 2.根据接口命名规则默认生成实现 3.自定义接口实现(类似MyBatis…...
Flink流批一体计算(16):PyFlink DataStream API
目录 概述 Pipeline Dataflow 代码示例WorldCount.py 执行脚本WorldCount.py 概述 Apache Flink 提供了 DataStream API,用于构建健壮的、有状态的流式应用程序。它提供了对状态和时间细粒度控制,从而允许实现高级事件驱动系统。 用户实现的Flink程…...
软考高级系统架构设计师系列论文九十三:论计算机网络的安全性设计
软考高级系统架构设计师系列论文九十三:论计算机网络的安全性设计 一、计算机网络安全性设计相关知识点二、摘要三、正文四、总结一、计算机网络安全性设计相关知识点 软考高级系统架构设计师:计算机网络...
山西电力市场日前价格预测【2023-08-29】
日前价格预测 预测明日(2023-08-29)山西电力市场全天平均日前电价为321.48元/MWh。其中,最高日前电价为372.80元/MWh,预计出现在19: 30。最低日前电价为272.85元/MWh,预计出现在12: 30。 价差方向预测 1: 实…...
计算机毕设 基于深度学习的人脸专注度检测计算系统 - opencv python cnn
文章目录 1 前言2 相关技术2.1CNN简介2.2 人脸识别算法2.3专注检测原理2.4 OpenCV 3 功能介绍3.1人脸录入功能3.2 人脸识别3.3 人脸专注度检测3.4 识别记录 4 最后 1 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新…...
ES 7.6 - APi基础操作篇
ES7.6-APi基础操作篇 前言相关知识索引相关创建索引查询索引查询所有索引删除索引关闭与打开索引关闭索引打开索引 冻结与解冻索引冻结索引解冻索引 映射相关创建映射查看映射新增字段映射 文档相关(CURD)新增文档根据ID查询修改文档全量覆盖根据ID选择性修改根据条件批量更新 …...
【Go 基础篇】Go语言循环结构:实现重复执行与迭代控制
介绍 循环结构是编程中的重要概念,它允许我们重复执行一段代码块,或者按照一定的条件进行迭代控制。Go语言提供了多种循环结构,包括for、while和do-while等,用于不同的场景下实现循环操作。本篇博客将深入探讨Go语言中的循环结构…...
RabbitMQ笔记-RabbitMQ基本术语
RabbitMQ基本术语 相关概念; 生产者(Producer):投递消息。消息:消息体(payload)标签(label);生产者把消息交给rabbitmq,rabbitmq会根据标签把消息发给感兴趣…...
Git向远程仓库与推送以及拉取远程仓库
理解分布式版本控制系统 1.中央服务器 我们⽬前所说的所有内容(⼯作区,暂存区,版本库等等),都是在本地也就是在你的笔记本或者计算机上。⽽我们的 Git 其实是分布式版本控制系统!什么意思呢? 那我们多人…...
PostgreSQL+SSL链路测试
SSL一个各种证书在此就不详细介绍了,PostgreSQL要支持SSL的前提需要打开openssl选项,包括客户端和服务器端。 测试过程。 1. 生成私钥 root用户: mkdir -p /opt/ssl/private mkdir -p /opt/ssl/share/ca-certificateschmod 755 -R /opt/ss…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
