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

数据库第一章 概论简答题
数据库第二章 关系数据库简答题
数据库第三章 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.rhkb.cn/news/210658.html

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

相关文章

CRM系统是怎样帮助销售流程自动化的?

销售业绩是衡量企业经营的重要指标,也是销售人员一直要达成的目标。销售业绩能否提高取决于销售人员的能力、客户服务水平,还需要借助有效的工具。CRM系统就是这样的一款软件。企业如何提高销售业绩?不妨试试CRM销售流程自动化。 CRM如何实现…

第17章 匿名函数

第17.1节 匿名函数的基本语法 [捕获列表](参数列表) mutable(可选) 异常属性 -> 返回类型 { // 函数体 }语法规则:lambda表达式可以看成是一般函数的函数名被略去,返回值使用了一个 -> 的形式表示。唯一与普通函数不同的是增加了“捕获列表”。 …

11、pytest断言预期异常

官方用例 # content of test_exception_zero.py import pytestdef test_zero_division():with pytest.raises(ZeroDivisionError):1/0# content of test_exception_runtimeerror.py import pytestdef test_recursion_depth():with pytest.raises(RuntimeError) as excinfo:def…

ssm的网上奶茶店系统(有报告)。Javaee项目。

演示视频: ssm的网上奶茶店系统(有报告)。Javaee项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring SpringMvc Mybat…

前端面试高频考点—事件循环Event loop

目录 事件循环 执行步骤 概念讲解 主线程 微任务(micro task) 宏任务(macro task) Event Loop经典例题 这段代码的执行结果是什么? 正确答案: 具体流程: 事件循环 主线程从"任务队列"中读取执行事件,这个过程…

【技术分享】RK356X Android11 以太网共享4G网络

本文基于IDO-SBC3566-V1B Android11系统实现开机后以太网自动共享4G网络功能。 IDO-SBC3566基于瑞芯微RK3566研发的一款高性能低功耗的智能主板,采用四核A55,主频高达1.8GHz,专为个人移动互联网设备和AIOT设备而设计,内置了多种功能强大的嵌…

android开发市场被抢占,鸿蒙能入行吗?

根据最新的数据,华为Mate60系列在上市第二周就成功占据了国内手机市场的17%份额,排名第二。而机构预测,华为手机在第37周有望超过20%的市场份额,成为国内手机市场的冠军。 一开始,人们对HarmonyOSNEXT持保留态度&…

GODOC命令无效,原因是需要手动安装

在看《GO程序设计语言》这本书,按照其中的内容,想看下GO自带的包的文档。 书中讲,可以直接输入GoDOC命令来打开一个服务器,从而可以用浏览器访问文档库。输入命令后,系统提示找不到该命令。 查了资料后才发现&#xff…

代码随想录算法训练营 ---第五十五天

今天是 动态规划:编辑距离问题。 第一题: 简介: 动态规划五部曲: 1.确定dp数组的含义 dp[i][j] 表示以下标i-1为结尾的字符串s,和以下标j-1为结尾的字符串t,相同子序列的长度为dp[i][j]。 2.确定递推公…

unity | 动画模块之循环滚动选项框

一、作者的话 评论区有人问,有没有竖排循环轮播选项框,我就写了一个 二、效果动画 如果不是你们想要的,就省的你们继续往下看了 三、制作思路 把移动分成里面的方块,还有背景(父物体),方块自…

【隐私计算】安全三方计算(3PC)的加法和乘法计算协议

ABY3中采用replicated secret sharing(复制秘密分享)机制,即2-out-of-3秘密分享,三个参与方的每一方都拥有share中的两份。下面来看一下这样做有什么好处。 2-out-of-3秘密分享 有 x , y x, y x,y两个操作数,先进行秘…

①归并排序、快速排序 、堆排序、计数排序[算法、代码模板、面试题]

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 排序[算法、代码模板、面试题] ①归并排序、快…

波奇学C++:类型转换和IO流

隐式类型转换 int i0; double pi; 强制类型转换 int* pnullptr; int a(int)p; 单参数构造函数支持隐式类型转换 class A { public:A(string a):_a(a){} private:string _a; }; A a("xxxx"); //"xxx" const char* 隐式转换为string 多参数也可以通过{…

【6】PyQt信号和槽

1. 信号和槽简介 信号和槽机制是 QT 的核心机制,应用于对象之间的通信 信号和槽是用来在对象间传递数据的方法当一个特定事件发生的时候,signal会被emit出来,slot调用是用来响应相应的signal的Qt中对象已经包含了许多预定义的 signal&#…

Android进阶之路 - TextView文本渐变

那天做需求的时候,遇到一个小功能,建立在前人栽树,后人乘凉的情况下,仅用片刻就写完了;说来惭愧,我以前并未写过文本渐变的需求,脑中也仅有一个shape渐变带来的大概思路,回头来看想着…

Web网页安全策略的研究及其实现方案

摘 要 越来越多的人使用电脑来接触互联网,事实上,使用Web技术的实现基于网络的不断完善和发展的交流网站,人们可以利用计算机网络技术,方便得到想要的任何信息。计算机网络的发展,也促进了相关产业的发展,…

【vue-router】useRoute 和 useRouter 的区别

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🌺 仓库主页: Gitee 💫 Github 💫 GitCode 💖 欢迎点赞…

5个超实用GPT技巧,包括绩效总结、头脑风暴、营销策略等(内附提示词)

今天和大家分享5个用于工作上的GPT技巧,例如进行绩效总结、自我评估、头脑风暴,还是制作PPT方案等等,最大化提升你工作效率,本期内容对于大家来说都非常受用,记得收藏起来哦! 那么接下来就直接进入正题吧&a…

postgresql pg_hba.conf 配置详解

配置文件之pg_hba.conf介绍 该文件用于控制访问安全性,管理客户端对于PostgreSQL服务器的访问权限,内容包括:允许哪些用户连接到哪个数据库,允许哪些IP或者哪个网段的IP连接到本服务器,以及指定连接时使用的身份验证模…

Leetcode—205.同构字符串【简单】

2023每日刷题&#xff08;五十&#xff09; Leetcode—205.同构字符串 算法思想 参考自k神思路 实现代码 class Solution { public:unordered_map<char, char> s2t, t2s;bool isIsomorphic(string s, string t) {int n s.size();for(int i 0; i < n; i) {char …