数据库第十第十一章 恢复和并发简答题

数据库第一章 概论简答题
数据库第二章 关系数据库简答题
数据库第三章 SQL简答题
数据库第四第五章 安全性和完整性简答题
数据库第七章 数据库设计简答题
数据库第九章 查询处理和优化简答题

1.什么是数据库中的事务?它有哪些特性?这些特性的含义是什么?恢复技术能保证事务的哪些特性?

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

事务的特性:

  • 原子性A :事务中的操作要么都做,要么都不做;
  • 一致性C :事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态;
  • 隔离性 I :一个事务的执行不能被其他事务干扰;
  • 持续性D :一个事务一旦提交,它对数据库中数据的改变就应该是永久性的;

恢复技术可以保证事务的原子性持续性

  • 保证原子性:UNDO可以保证将未成功提交的操作取消,REDO可以保证将成功提交的操作都完成,因此可以保证事务的原子性;
  • 保证持续性:REDO可以保证事务只要提交,改变一定被永久实现;

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

  • 如果先写数据库,在写日志之前发生了故障,没有登记这个修改,以后就无法恢复这个修改了;
  • 如果先写日志文件,在恢复时只是多执行了一次UNDO 操作,并不会影响数据库的正确性。

3.针对不同的故障,给出恢复的策略和方法。

对于事务故障

  • 反向扫描文件日志,查找该事务的更新操作;
  • 对该事务的更新操作执行逆操作:即将日志记录中“更新前的值”写人数据库直至读到此事务的开始标记;

对于系统故障

  • 正向扫描日志文件找出在故障发生前已经提交的事务队列(REDO队列)和未完成的事务队列(UNDO队列);
  • 未完成的事务队列中的各个事务进行UNDO处理;
  • 已经提交的事务队列中的各个事务进行REDO处理;

对于介质故障

  • 装人最新的数据库后备副本(离故障发生时刻最近的转储副本),使数据库恢复到最近一次转储时的一致性状态;
  • 装人转储结束时刻的日志文件副本;
  • 启动系统恢复命令由DBMS完成恢复功能即重做已完成的事务;

4.什么是检查点记录?检查点的内容应该包括哪些?

检查点记录:
是一类新的日志记录,增加一个重新开始文件,并让恢复子系统在登录日志文件期间动态维护日志。

检查点的内容:

  • 建立检查点时刻所有正在执行的事务清单;
  • 这些事务的最近一个日志记录的地址;

5.在数据库恢复中使用检查点有什么好处(优点)?试举一个具体例子加以说明

  • 节约时间和成本:利用日志技术进行数据库恢复时,恢复子系统必须搜索整个日志,这将耗费大量的时间;
  • 避免重复工作:需要 REDO处理的事务实际上已经将它们的更新操作结果写到数据库中了,恢复子系统又会重新执行这些操作,浪费大量时间;

例如:
检查点技术只需从 t c {t_c} tc开始扫描日志,不需要从头开始;
事务 T 3 {T_3} T3的更新实际上已经写到数据库中了,检查点技术在恢复时没有再对其进行REDO处理;
在这里插入图片描述

6.试述使用检查点方法进行恢复的步骤。

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

  • 由该检查点记录得到检查点建立时刻所有正在执行的事务清单 ACTIVE-LIST;
    建立两个事务队列:

    • UNDO-LIST:需要执行 UNDO 操作的事务集合;
    • REDO-LIST:需要执行 REDO 操作的事务集合;
      把 ACTIVE-LIST 暂时放人 UNDO-LIST 队列;REDO 队列暂为空;
  • 从检查点开始正向扫描日志文件;

    • 如有新开始的事务 T,把 T 暂时放人 UNDO-LIST 队列;
    • 如有提交的事务 T,把 T 从 UNDO-LIST 队列移到 REDO-LIST 队列直到日志文件
      结束;
  • 对 UNDO-LIST 中的每个事务执行 UNDO 操作,对 REDO-LIST 中的每个事务执
    行 REDO 操作;

7.什么是数据库镜像?它有什么用途?

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

数据库镜像的用途:

  • 用于数据库恢复:当出现介质故障时,镜像磁盘可继续使用,同时 DBMS自动利用镜像磁盘数据进行数据库的恢复;
  • 提高数据库的可用性:在没有出现故障时,当一个用户对某个数据加排他锁进行修改时,其他用户可以读镜像数据库上的数据而不必等待该用户释放锁;

8.在数据库中为什么需要并发控制?并发控制技术能保证事务的哪些特性?

  • 并发控制的重要性:

数据库中通常会有多个事务在同时进行,可能会产生同时读取或修改同一数据的情况,如果不对并发操作加以控制就可能会导致存取和存储不正确的数据,破坏数据库的一致性,因此需要提供并发控制;

  • 并发控制可以保证事务的一致性隔离性

(第一题中:恢复技术可以保证事务的原子性持续性

9.并发操作可能会产生哪几类数据不一致?用什么方法可以避免各种不一致的情况?

并发可能会产生的不一致性:

  • 丢失修改:T1和T2同时读和修改同一数据,T2提交的结果会导致T1的修改丢失;
  • 不可重复读:T1读数据后,T2更新同一数据,使T1无法再现前一次的读取结果;
  • 读脏数据:T1修改某一数据后写回磁盘,T2读取同一数据后,T1由于某种原因被撤销,此时数据恢复原值,T2读到的数据就与数据库中的数据不一致;

常用方法:
封锁、时间戳、乐观控制法和多版本并发控制

10.什么是封锁?基本的封锁类型有几种?试述它们的含义。

封锁:
封锁就是事务T在对某个数据对象例如表、记录等操作之前先向系统发出请求,对其加锁
加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新或读取此数据对象

基本的封锁类型:

  • 排他锁(X锁):若事务T对数据对象A加上锁,则只允许T读取和修改A其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A

  • 共享锁(S锁):若事务T对数据对象A 加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁直到T释放A上的S 锁。这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改

11.什么是活锁?试述活锁产生原因和解决方法。

活锁:
活锁的含义是该等待事务等待时间太长,似乎被锁住了,实际上可能被激活。如果事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待。然后T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求······T2有可能永远等待。

活锁的产生原因:
当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁。

活锁的解决方法:
避免活锁的简单方法是采用先来先服务的策略。当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中第一个事务获得锁。

12.什么是死锁?如何预防、检测并解除死锁?

死锁:
如果事务T1封锁了数据R1,T2封锁了数据R2,然后T1又请求封锁R2,因T2已封锁了R2,于是T1等待T2释放R2上的锁。接着T2又申请封锁R1,因,1已封锁了R1,T2也只能等待T1释放R1上的锁。这样就出现了T1在等待T2,而T2又在等待T1的局面,T1和T2两个事务永远不能结束,形成死锁。

预防死锁:

  • 一次封锁法:要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行
  • 顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁

检测死锁:

  • 超时法:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁;
  • 等待图法:并发控制子系统周期性地生成事务等待图,并进行检测。如果发现图中存在回路,则表示系统中出现了死锁;

解除死锁:
通常采用的方法是选择一个处理死锁代价最小的事务,将其撤销,释放此事务持有的所有锁,使其他事务得以继续运行下去。

13.在并发控制中,封锁协议是指什么?

封锁协议通常指何时申请X锁或S锁、持锁时间、何时释放等规则,如三级封锁协议:

  • 一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放;
  • 二级封锁协议:在一级封锁协议基础上增加事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁;
  • 三级封锁协议:在一级封锁协议的基础上增加事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放;

14.什么是两段锁协议?遵守两段锁协议的事务可能会发生死锁吗?试举例说明。

两段锁协议:
是指所有事务必须分两个阶段对数据项加锁和解锁。

  • 在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁
  • 释放一个封锁之后,事务不再申请和获得任何其他封锁;

遵守两段锁协议的事务可能发生死锁,因为两段锁协议并不要求事务必须一次将所有要使用的数据全部加锁。

15.为什么要引入意向锁?意向锁的含义是什么?

意向锁:
对任一结点加锁时,必须先对它的上层结点加意向锁。引进意向锁后系统对某一数据对象加锁时不必逐个检查与下一级结点的封锁冲突了。

引进意向锁是为了提高封锁子系统的效率
在多粒度封锁方法中,一个数据对象可能以两种方式加锁一一显式封锁和隐式封锁,因此系统在对某一数据对象加锁时,不仅要检查该数据对象上有无(显式和隐式)封锁与之冲突,还要检查其所有上级结点和所有下级结点,看申请的封锁是否与这些结点上的(显式和隐式)封锁冲突。显然,这样的检查方法效率很低。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring不再支持Java8了

在今天新建模块的时候发现了没有java8的选项了,结果一查发现在11月24日,Spring不再支持8了,这可怎么办呢?我们可以设置来源为阿里云https://start.aliyun.com/ 。 java8没了 设置URL为阿里云的地址

spring-webmvc练习-日程管理-访问后端展示列表数据

1、util/request.js import axios from "axios";let request axios.create({baseURL: "http://localhost:8080",timeout: 50000 });export default request 2、api/schedule.js import request from "../util/request.js";export let getSchedu…

【重磅】:Spring Initializer 已经不支持Java8,也就是SpringBoot2.x项目初始化

Spring Initializer 已经不支持Java8 问题描述解决方案升级java版本更换IDEA内置的Spring Initializer中 Server URL的镜像地址 问题描述 我们可以看到在IDEA内置的Spring Initializer中 Java版本选择模块已经不支持1.8了,同样的,官网也不再支持了 解决…

为何要隐藏IP地址?网络上哪些行为需要隐藏IP和更换IP?

网络已经成为现代人生活的重要组成部分,人们在网络上交流、学习、娱乐、购物等。但是,在享受网络带来的便利时,我们也需要时刻保护自己的隐私和安全。其中,IP地址作为网络通信中的重要标识,如何隐藏以及在哪些情况下需…

掌握反转链表的艺术:LeetCode 206 深入解析与优化 - 双指针与递归方法精讲

LeetCode.206反转链表 1.问题描述2.解题思路3.代码 1.问题描述 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2: 输入&#xff1a…

SpringBoot监控Redis事件通知

Redis的事件通知 Redis事件通过 Redis 的订阅与发布功能(pub/sub)来进行分发, 因此所有支持订阅与发布功能的客户端都可以在无须做任何修改的情况下, 使用键空间通知功能。 因为 Redis 目前的订阅与发布功能采取的是发送即忘&am…

oracle impdp 导入元数据表空间异常增大的解决办法

expdp导出的时候指定了contentsmetadata_only只导出元数据,但是在impdp导入到新库的时候,发现新库的表空间增长非常大,其实这个直接就可以想到,应该是大表的initial segment过大导致的 正常impdp,在执行创建表和索引的…

SocialFi 和 GameFi 的碰撞 — Socrates 构建新的 Web3 流量入口

伴随着比特币现货 ETF 即将通过 SEC 批准的消息,整个加密市场在11月份达到了熊市以来的新高峰。市场普遍上涨,新的玩法和项目不断涌出吸引了大量老用户回归以及新用户加入。加密市场经过长期的低迷,终于来到了牛市的起点! 上一轮牛…

振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(6)

注解目录 1、znFAT 的起源 1.1 源于论坛 (那是一个论坛文化兴盛的年代。网友 DIY SDMP3 播放器激起了我的兴趣。) 1.2 硬盘 MP3 推了我一把 (“坤哥”的硬盘 MP3 播放器,让我深陷 FAT 文件系统不能自拔。) 1.3 我…

正则表达式和awk

目录 一、正则表达式 1.正则表达式基本介绍 2.正则表达式分类 3.基本正则表达式分类 4.代表字符 5.表示次数 6.位置锚定 7.分组或其他 8.扩展正则表达式 二、awk 1.语法 2.选项 3.基础用法 4.内置变量 5.条件判断 6.数组 总结:本章主要介绍了正则表…

分享:身份证阅读器在ARM Linux系统调用libwlt2bmp.so解码库实现身份证头像解码

头像解码库:libwlt2bmp.so 照片文件名:photo.bmp 原始身份证相片数据:574C66007E00320000F........(此处省略) 调用身份证阅读器Linux开发包,然后调用libwlt2bmp.so解码库文件,传入身份证原始…

0基础学习VR全景平台篇第123篇:VR视频航拍补天 - PR软件教程

上课!全体起立~ 大家好,欢迎观看蛙色官方系列全景摄影课程! 嗨,大家好,今天我们来介绍【航拍VR视频补天】。之前已经教给了大家如何处理航拍图片的补天,肯定有很多小伙伴也在好奇,航拍的VR视频…

地图标注系统v0.10.1

微启地图标注系统 thinkphpuniapp前端,微信小程序已适配,近期更新抖音小程序和QQ小程序,后期上分销功能,标注系统用户粘性不算大,本着小程序用完即走的理念,暂时没打算适配安卓和iOS 主要功能 用户端&am…

移动安全威胁:今天和明天的危险

随着技术的发展,个人和公司的设备、数据和隐私所面临的威胁也在发生变化。在本文中,我们将仔细研究当今移动设备安全面临的主要威胁,并共同探讨不久的将来的前景。 但首先让我们从基础开始:如何对移动设备发起攻击? …

1.ORB-SLAM3中如何保存多地图、关键帧、地图点到二进制文件中

1 保存多地图 1.1 为什么保存(视觉)地图 因为我们要去做导航,导航需要先验地图。因此需要保存地图供导航使用,下面来为大家讲解如何保存多地图。 1.2 保存多地图的主函数SaveAtlas /*** brief 保存地图* param type 保存类型*/ void System::SaveAtlas(…

机器学习中的概率与统计知识点汇总

引言 在学习高级知识时,理解基本概念至关重要。为什么?因为基础知识是您构建高级知识的基础。如果你把更多的东西放在薄弱的基础之上,它最终可能会分裂,这意味着你最终无法完全理解你所学的任何知识。因此,让我们尝试…

如何正确选择爬虫采集接口和API?区别在哪里?

在信息时代,数据已经成为了一个国家、一个企业、一个个人最宝贵的资源。而爬虫采集接口则是获取这些数据的重要手段之一。本文将从以下八个方面进行详细讨论: 1.什么是爬虫采集接口? 2.爬虫采集接口的作用和意义是什么? 3.爬虫…

智慧城市政务一网统管解决方案:PPT全文34页,附下载

关键词:智慧政务解决方案,智慧城市解决方案,智慧政务一网统管解决方案,一网统管治理理念,一网统管治理体系,一网统管治理手段,智慧政务综合服务平台建设 一、智慧城市政务一网统管建设背景 一…

CocosCreator 之 Tween缓动系统的使用

版本: 3.4.0 语言: TypeScript 环境: Mac 简介 在CocosCreator 3.x版本后, Tween缓动系统代替了原有的Action动作。官方使用缓动系统的主要目的之一是用于解决离线动画无法满足需求时的动态动画问题。 简单的示例: …

R语言期末考试复习二

上篇文章的后续!!!! http://t.csdnimg.cn/sqvYD 1.给向量vec1设置名为"A","B","C","D","E","F","G"。 2.将矩阵mat1的行名设置为"Row1"&#…
最新文章