软考:中级软件设计师:数据库恢复与备份,故障与恢复,反规范化

软考:中级软件设计师:数据库恢复与备份

提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性

关于互联网大厂的笔试面试,都是需要细心准备的
(1)自己的科研经历,科研内容,学习的相关领域知识,要熟悉熟透了
(2)自己的实习经历,做了什么内容,学习的领域知识,要熟悉熟透了
(3)除了科研,实习之外,平时自己关注的前沿知识,也不要落下,仔细了解,面试官很在乎你是否喜欢追进新科技,跟进创新概念和技术
(4)准备数据结构与算法,有笔试的大厂,第一关就是手撕代码做算法题
面试中,实际上,你准备数据结构与算法时以备不时之需,有足够的信心面对面试官可能问的算法题,很多情况下你的科研经历和实习经历足够跟面试官聊了,就不需要考你算法了。但很多大厂就会面试问你算法题,因此不论为了笔试面试,数据结构与算法必须熟悉熟透了
秋招提前批好多大厂不考笔试,直接面试,能否免笔试去面试,那就看你简历实力有多强了。
(5)考网警的大佬,务必把软考:中级软件设计师的内容学好学透,学广,学多


文章目录

  • 软考:中级软件设计师:数据库恢复与备份
    • @[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,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 下 Java Socket 编程报 java.net.Exception:Permission denied (权限不足)

本人用Linux部署springboot项目时遇见这个错误&#xff0c;原因很简单&#xff0c;就是端口号没有选对。 在linux系统中&#xff0c;端口号再1024以下的需要root权限&#xff0c;只要把端口改成大于1024的就可以了&#xff0c;但避开一些软件的默认端口&#xff0c;如Tomcat的8…

Midjourney学习(三)6个高级应用

使用Remix Mode在原图片的基础上进行二次创作 通过prompt得到大图之后&#xff0c;点击Make Variations按钮&#xff0c;输入Remix Prompt&#xff0c;即可得到意想不到的效果&#xff01; 局部内容重绘 通过局部重绘可以实现对画面内容更加精细化的控制&#xff0c;同样也是需…

设计模式—策略模式

目录 一、定义 二、特点 三、优点 四、缺点 五、实例 六.涉及到的知识点 1、一个类里面有哪些东西&#xff1f; 2、类和实例 什么是类&#xff1f; 什么是实例&#xff1f; 什么是实例化&#xff1f; 3、字段和属性 什么是字段&#xff1f; 属性是什么&#xff1…

新的雅思口语6分标准

目录 新的雅思口语6分标准 要有细节&#xff0c;要有充分的话题词汇资源 要拥有具象思维能力&#xff0c;要有画面感 下义词是什么意思&#xff1f; 方法&#xff1a;现在时未来时 &#xff08;形成时态多样&#xff09;观点解释 原因要有排他性 "Kick off" 是…

windows系统服务器在不解锁屏幕不输入密码的前提下,电脑通电开机启动程序。

在控制面板中找到“管理工具”中的 “任务计划程序”&#xff0c;打开“任务计划程序”窗口。如图&#xff1a; 双击打开任务计划程序&#xff0c;空白出右键创建基本任务&#xff0c;或者点击最右侧的创建基本任务。 输入名称&#xff0c;点击下一步。 先选择计算机启动时&a…

开启智能时代:深度解析智能文档分析技术的前沿与应用

开启智能时代&#xff1a;深度解析智能文档分析技术的前沿与应用 本章主要介绍文档分析技术的理论知识&#xff0c;包括背景介绍、算法分类和对应思路。通过本文学习&#xff0c;你可以掌握&#xff1a;1. 版面分析的分类和典型思想 2. 表格识别的分类和典型思想 3. 信息提取的…

JavaScript 手写题

基础手写 全排列&#xff08;力扣原题&#xff09; 要求以数组的形式返回字符串参数的所有排列组合。 注意&#xff1a; 字符串参数中的字符无重复且仅包含小写字母返回的排列组合数组不区分顺序const _permute string > {const result []const map new Map()const df…

百万级并发IM即时消息系统(3)配置数据初始化和前后端交互

04_配置数据初始化及前后端交互_哔哩哔哩_bilibili 1.配置文件 创建一个config文件夹以及一个app.yaml配置文件。 该文件专门存放一些关键配置&#xff0c;如mysql DNS路径和redis的addr账号密码等。 后期可以创建一个工具包和一些初始化方法&#xff0c;专门用来加载这些配…

用AI + Milvus Cloud搭建着装搭配推荐系统教程

以下函数定义了如何将图像转换为向量并插入到 Milvus Cloud 向量数据库中。代码会循环遍历所有图像。(注意:如果需要开启 Milvus Cloud 全新特性动态 Schema,需要修改代码。) 查询向量数据库 以下代码演示了如何使用输入图像查询 Milvus Cloud 向量数据库,以检索和上传…

学习 使用pandas库 DataFrame 使用

1 、 数据排序 sort_values()函数 by:要排序的名称或名称列表&#xff0c; sorted_df df.sort_values(byAge,ascendingFalse) 由大到小排序&#xff1b; sorted_df df.sort_values(byAge) 由小到大排序&#xff1b; # 创建一个示例数据帧 data {Name: [Tom, Nick, John…

spring:事务失效+事务传播行为

一、事务失效 1.Transactional作用在非public上 Transactionalvoid transferAccounts(){adminDao.sub();System.out.println(10/0);adminDao.add();} 只执行sub&#xff08;&#xff09; 2.异常被try catch捕获 Transactionalpublic void transferAccounts(){adminDao.sub(…

C语言每日一练---Day(14)

本专栏为c语言练习专栏&#xff0c;适合刚刚学完c语言的初学者。本专栏每天会不定时更新&#xff0c;通过每天练习&#xff0c;进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字&#xff1a;统计每个月兔子的总数 数列的和 &#x1f493;博主csdn个人主页&#x…

【分布式技术专题】「OSS中间件系列」Minio的文件服务的存储模型及整合Java客户端访问的实战指南

Minio的元数据 数据存储 MinIO对象存储系统没有元数据数据库&#xff0c;所有的操作都是对象级别的粒度的&#xff0c;这种做法的优势是: 个别对象的失效&#xff0c;不会溢出为更大级别的系统失效。便于实现"强一致性"这个特性。此特性对于机器学习与大数据处理非…

vue3+ts+uniapp小程序端自定义日期选择器基于内置组件picker-view + 扩展组件 Popup 实现自定义日期选择及其他单列选择

vue3ts 基于内置组件picker-view 扩展组件 Popup 实现自定义日期选择及单列选择 vue3tsuniapp小程序端自定义日期选择器 1.先上效果图2.代码展示2.1 组件2.2 公共方法处理日期2.3 使用组件(全局自动导入的情况) 3.注意事项3.1refSelectDialog3.1 backgroundColor"#fff&q…

DP读书:鲲鹏处理器 架构与编程(十一)鲲鹏生态软件架构 AND 硬件特定软件

鲲鹏生态软硬件构成 鲲鹏软件构成硬件特定软件1. Boot Loader2. SBSA 与 SBBR3. UEFI4. ACPI 鲲鹏软件构成 鲲鹏处理器的软件生态是一个不断发展的软件生态&#xff0c;服务器本身也具有复杂度多样性&#xff0c;经过很长时间的发展服务器硬件有不同的操作系统方案&#xff0c…

pdfh5在线预览pdf文件

前言 pc浏览器和ios的浏览器都可以直接在线显示pdf文件&#xff0c;但是android浏览器不能在线预览pdf文件&#xff0c;如何预览pdf文件&#xff1f; Github: https://github.com/gjTool/pdfh5 Gitee: https://gitee.com/gjTool/pdfh5 使用pdfh5预览pdf 编写预览页面 <…

开源电子合同签署平台小程序源码 在线签署电子合同小程序源码 合同在线签署源码

聚合市场上各类电子合同解决方案商&#xff0c;你无需一个一个的对接电子合同厂商&#xff0c;费时&#xff0c;费力&#xff0c;因为这个工作我们已经做了适配&#xff0c;你只需要一个接口就能使用我们的所有服务商&#xff0c;同时你还可以享受我们的接口渠道价格。 Mini-C…

Python飞机大战小游戏

游戏规则&#xff1a;键盘上下左右键控制飞机移动 游戏展示图片&#xff1a; 源码&#xff1a; 第一个py命名为&#xff1a;plane_main.py import pygamefrom plane_sprites import *class PlaneGame(object):# """飞机大战主游戏"""def __in…

解决Jackson解析JSON时出现的Illegal Character错误

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom)

文章目录 前言参考目录版本说明Windows 部署 seata-server1&#xff1a;下载压缩包2&#xff1a;文件存储模式3&#xff1a;db 存储模式3.1&#xff1a;建表3.2&#xff1a;修改配置文件3.3&#xff1a;启动脚本4&#xff1a;源码部署 Docker 部署 seata-server &#xff08;基…