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

news2024/11/15 17:27:51

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

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

关于互联网大厂的笔试面试,都是需要细心准备的
(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.coloradmin.cn/o/934446.html

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

相关文章

第 7 章 排序算法(6)(快速排序)

7.9快速排序 7.9.1快速排序法介绍: 快速排序&#xff08;Quicksort&#xff09;是对冒泡排序的一种改进。基本思想是&#xff1a;通过一趟排序将要排序的数据分割成独立的两部分&#xff0c;其中一部分的所有数据都比另外一部分的所有数据都要小&#xff0c;然后再按此方法对…

idea2023项目上传到gitee

1、按照gitee插件 File——>Settings plugins——>Marketplace下面搜索gitee,然后按照gitee插件 2、上传项目 VCS_——>Share Project on Gitee 如果第一次没登录的需要先登录&#xff0c;登录完后就可以上传了

【Python】文件拖放(drag and drop)并获取文件信息

QWidget 对象支持拖放&#xff0c;拖拽文件到窗口时触发拖拽事件&#xff0c;拖拽时触发的几个事件函数&#xff1a; dragEnterEvent&#xff1a;当拖动动作进入窗口时触发该事件 dragLeaveEvent&#xff1a;当拖动动作离开窗口时触发该事件&#xff0c;离开窗口时没有mimeDa…

Matlab 使用经验分享(常用函数介绍;矩阵常见计算)

Matlab 使用经验分享 大家好&#xff01;最近有很多朋友询问我关于 Matlab 的使用&#xff0c;于是我决定写一篇博客来分享一下我的经验。对于数学和编程爱好者来说&#xff0c;Matlab 是一个非常有用的工具。我自己在数学实验和数学建模竞赛中也经常使用它。那么&#xff0c;…

数据结构算法--5 归并排序

归并排序 我们先看一下归并排序是怎么归并的 两个有序列表&#xff0c;有low指针指向2&#xff0c;high指针指向6&#xff0c;mid指针指向9 再建一个新列表&#xff0c;1<2&#xff0c;所以1放到列表&#xff0c;右指针右移一位&#xff0c;再比较2和3&#xff0c;2放入列…

【KMP算法-代码随想录】

目录 1.什么是KMP2.什么是next数组3.什么是前缀表&#xff08;1&#xff09;前后缀含义&#xff08;2&#xff09;最长公共前后缀&#xff08;3&#xff09;前缀表的必要性 4.计算前缀表5.前缀表与next数组&#xff08;1&#xff09;使用next数组来匹配 6.构造next数组&#xf…

微信小程序的社区老年人 高校大学生体检信息管理系统

社区老年人体检信息管理系统的系统项目的概述设计分析&#xff0c;主要内容有平台的具体分析&#xff0c;进行数据库的是设计&#xff0c;数据采用mysql数据库&#xff0c;并且对于系统的设计采用比较人性化的操作设计&#xff0c;对于系统出现的错误信息可以及时做出处理及反馈…

成都国际车展来袭:有颜值有实力 大运新能源两款车型备受关注

今年成都国际车展现场最大看点是什么&#xff1f;诸多实力车企汇聚一堂各显神通&#xff0c;形式各样的新能源车型更是吸晴无数&#xff0c;成为消费者的购车首选。老品牌、新势力的大运新能源独具匠心设计特色展台&#xff0c;旗下两款车型悦虎和远志M1重磅登场。两款车型既有…

直击成都国际车展:远航汽车多款车型登陆车展,打造完美驾乘体验

随着市场渗透率日益高涨&#xff0c;新能源汽车成为今年成都国际车展的关注焦点。在本届车展上&#xff0c;新能源品牌占比再创新高&#xff0c;覆盖两个展馆&#xff0c;印证了当下新能源汽车市场的火爆。作为大运集团重磅打造的高端品牌&#xff0c;远航汽车深度洞察高端智能…

记录一个问题~beego中的配置文件autorender

事情的经过是这样的: 在学习beego框架时,遇到了一个问题: tpl模板文件不显示内容; 原因所在: beego配置文件: appname hello httpport 8080 runmode dev world world dataSourceInfo root:955945tcp(localhost:3306)/gmusic?charsetutf8 #自动渲染 这里关闭后就关闭了自…

LeetCode 热题 100(六):25. K 个一组翻转链表、230. 二叉搜索树中第K小的元素、199. 二叉树的右视图

题目一&#xff1a; 25. K 个一组翻转链表https://leetcode.cn/problems/reverse-nodes-in-k-group/题目要求&#xff1a; 思路&#xff1a;建立虚拟头结点&#xff0c;并采用头尾节点&#xff0c;使用常规翻转的函数进行翻转。 具体见代码逻辑。 注意&#xff1a;一定注意好…

咸虾米中关于触发事件的运用

实验效果&#xff1a; 1.点击方块&#xff0c;方块中的随机数发生改变 2.点击方块&#xff0c;方块的背景颜色发生改变 3.点击方块&#xff0c;方块的大小任意改变 4.对上面的三种情况合并&#xff0c;随机数&#xff0c;大小&#xff0c;颜色都发生改变&#xff01; 输入以…

Redis持久化之RDB解读

目录 什么是RDB 配置位置参数解读 如何使用 自动触发 手动触发 save bgsave RDBRDB持久化文件的恢复 正常恢复 恢复失败处理方法 RDB优势 RDB 缺点 redis是一个内存数据库,当redis服务器重启,获取电脑重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘…

C++动态库编程 | C++名称改编、标准C接口、extern “C”、函数调用约定以及def文件详解

目录 1、导入导出声明 2、C函数名称改编与extern "C" 3、函数调用约定与跨语言调用 3.1、函数调用约定 3.2、跨语言调用dll库接口 3.3、函数调用约定以哪个为准 4、def文件的使用 5、在C程序中引用ffmpeg库中的头文件链接报错问题 6、最后 VC常用功能开发汇…

Day46|leetcode 139.单词拆分

leetcode 139.单词拆分 题目链接&#xff1a;139. 单词拆分 - 力扣&#xff08;LeetCode&#xff09; 视频链接&#xff1a;动态规划之完全背包&#xff0c;你的背包如何装满&#xff1f;| LeetCode&#xff1a;139.单词拆分_哔哩哔哩_bilibili 题目概述 给你一个字符串 s 和一…

一文讲通物联网嵌入式

最近有很多同学问我&#xff0c;物联网近几年一直是科技的热点&#xff0c;嵌入式和物联网有什么关系呢&#xff1f;我在这里统一给大家讲解一下。 嵌入式是应用于物联网产品方向的一种嵌入式操作系统。类似于Android系统是谷歌开发的移动操作系统&#xff0c;嵌入式实际上也是…

如何使用 Tailwind CSS 设计高级自定义动画

使用Tailwind CSS掌握动画技术&#xff0c;为用户带来难忘的体验 开篇 动画已经成为网页设计的重要组成部分&#xff0c;使开发人员能够创建引人入胜和互动的用户体验。 Tailwind CSS&#xff0c;一款流行的实用型CSS框架&#xff0c;提供了一套强大的工具&#xff0c;可以轻松…

8款优秀的AI绘画工具,让您的绘画创作发挥无限想象力

今天为大家推荐8款优秀的AI绘画工具&#xff0c;帮助您在绘画创作中发挥无限想象力。这些工具结合了人工智能技术和艺术创作&#xff0c;能够帮助您实现更高水平的绘画作品。无论您是专业画家还是刚刚入门的爱好者&#xff0c;这些AI绘画工具都能为您提供灵感和支持。让我们一起…

【CSS】定位 ( 子元素绝对定位 父元素相对定位 | 代码示例 )

一、子元素绝对定位 父元素相对定位 绝对定位 要和 带有定位 的 父容器 搭配使用 ; 子元素 使用绝对定位 , 父元素要使用 相对定位 ; 子元素使用 绝对定位 , 在布局中不会保留其位置 , 子元素完全依赖 父容器 的位置 , 此时就要求父容器必须稳定 , 如果父容器使用了 绝对布…