《数据库系统概论》研究生复试面试问题整理

《数据库系统概论》(第四版)研究生复试面试问题整理


原文博客园逆旅者,乱爬死妈。

一、概论

1.术语

  数据D:描述事物的符号记录

  数据库DB:长期存储在计算机内、有组织的、可共享的数据集合

  数据库管理系统DBMS:位于用户和操作系统之间的一层数据管理软件,用户科学的组织和存储数据、高效的获取和维护数据

  数据库系统:在计算机系统中引入数据库后的系统构成。由数据库、数据库管理系统、应用程序、数据库管理员组成

2.使用数据系统有什么好处?

  可以大大提高应用系统的开发效率;方便用户的使用;减轻数据库系统管理人员维护数据库系统的负担等。

3.说明数据库系统和文件系统之间的区别与联系

  联系:二者都是计算机系统中管理数据的软件

  区别:文件系统面向某一应用程序,共享性差、冗余度大、独立性差,记录内有结构但整体无结构,由应用程序自行控制

  数据库系统面向现实世界,共享性高、冗余度小,具有高度的物理独立性和一定的逻辑独立性,整体结构化,用数据模型描述,由数据库管理系统提供数据安全性、完整性、并发控制和恢复能力

4.举出适合用文件系统而不是数据库系统的应用例子,再举出适合用数据库系统的应用例子

  适用于文件系统的:数据的备份;软件或应用程序在使用过程中的临时数据存储;功能比较简单、比较固定的应用系统也适合用文件系统

  适于数据库的比比皆是。

5.试述数据库系统的特点

  数据内部的结构化与整体数据的结构化

  数据的共享性高、冗余度低,易扩充

  数据独立性高:包括物理独立性和逻辑独立性,由数据库管理系统的模式结构和二级映像功能保证。

  数据由DBMS统一管理和控制

6.数据库管理系统的主要功能有哪些?

  数据库定义功能DDL

  数据组织、存储和管理功能

  数据操纵功能DML

  数据库的事务管理和运行管理

  数据库的建立和维护功能

  其他功能:不同数据库的互访等

7.试述数据模型的概念,数据模型的作用和数据模型的三要素

  数据模型是数据库中用来对现实世界进行抽象的工具,是数据库中用于提供信息表示和操作手段的形式架构。

  数据模型由数据结构、数据操作以及数据的约束条件组成

8.试述概念模型的作用

  概念模型实际上是现实世界到机器世界的一个中间层次。概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员之间进行交流所使用的语言

9.术语

  实体:客观存在并可相互区分的事物

  实体型:具有相同属性的实体具有相同的特质和性质,用实体名及属性名集合来抽象和刻画同类实体,称为实体型

  实体集:同型实体的集合

  属性:实体具有的某一特性

  码:唯一标识实体的属性集

  实体-联系图:E-R图

10.数据模型的类别

  数据模型有两类,第一类是概念模型,第二类是逻辑模型和物理模型;逻辑模型有非关系型(层次、网状等)、关系型、面向对象型等

11.试述层次网状模型的优缺点

  层次模型的优点是的数据结构比较简单、清晰,对具有一对多的层次关系的部门描述非常自然、直观,容易理解,这是层次数据库的突出优点;层次模型的查询效率高;层次模型能提供良好的完整性支持

  层次模型的缺点是现实世界很多联系是非层次的,层次模型很难自然的表示这些关系;对插入和删除的限制过多;查询子女结点时必须经过双亲结点;由于结构严密,层次命令趋于程式化

  网状模型的优点是能够更直接的描述现实世界;具有良好的性能,存取效率高

  网状模型的缺点是结构复杂不利于用户掌握;DDL,DML语言复杂,不利于最终用户使用

12.术语

  关系:通常说的一张表,其列属性不可再分

  属性:列

  域:属性的取值范围

  元组:表中一行

  码:表中的某个属性组,其可以唯一确定一个元组

  分量:元组中的一个属性值

  关系模式:对关系的描述

13.试述关系数据模型具有的特点

  关系数据模型具有以下优点:关系模型严格建立于数学概念之上;关系模型概念单一,无论是实体还是实体间的联系均使用关系来表示,操作的对象和结果都是关系,所以其数据结构简单、清晰,用户易懂易用;关系模型的存取路径对用户透明,从而具有更高的数据独立性、更高的安全性和保密性,简化了程序员的工作。

  关系数据模型的缺点是查询效率逊于关系模型,因为其存取路径对用户透明。

14.试述数据库的三级模式结构,这种结构的优点是什么?

  数据库的三级模式结构由外模式、模式、内模式所组成。

  外模式也称用户模式或子模式,是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示

  模式也称逻辑模式,是数据库中全体数据的逻辑结构和特性的描述,是所有用户的公共数据试图。模式所描述的是数据的全局逻辑结构外模式通常是模式的子集

  内模式也称为存储模式,是数据在数据库系统内部的表示,即对数据的物理结构和存储方式的描述

  数据库的三级模式是针对数据的三个抽象级别,它把数据的具体组织留给DBMS管理,使用户能抽象的处理数据,而不必关系数据在计算机内的具体表示和存储方式

  为了能够在内部内部实现三个层次之间的联系和转换,数据库系统在三个模式之间提供了二层映像:外模式/模式映像和模式/内模式映像。正是这二层映像保证了数据库系统中的数据能够有较高的逻辑独立性和物理独立性。

15.术语

  DDL:数据定义语言,定义数据库模式、外模式、内模式的语言

  DML:进行数据库增删改查的语言

16.什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性?为什么数据库系统具有数据与程序的独立性?

  物理独立性是指当数据的物理存储结构发生变化的时候,由数据库管理员对模式/内模式映像做相应的改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性。

  逻辑独立性是指当模式发生变化时(如增加新的关系、新的属性、改变属性的数据类型等),由数据库管理员对各个外模式/模式映像作相应的改变,可以使外模式保持不变,应用程序依据程序的外模式编写,从而应用程序不必修改,保证了数据与程序的逻辑独立性。

17.数据库系统的组成

  数据库、数据库管理系统、应用程序、数据库管理员

18.DBA的职责是什么?

  决定数据库的信息内容和结构

  决定数据库的存储结构和存取策略

  定义数据的安全性要求和完整性约束条件

  监督数据库的使用和运行

  数据库系统的改进、重组和重构

二、关系数据库

1.关系模型的三个组成部分

  关系数据结构、关系操作集合和完整性约束

2.试述关系数据语言的分类

  关系代数语言

  关系演算语言:元组关系演算ALPHA、域关系演算QBE

  具有关系代数和关系演算双重特点的语言SQL

  以上语言的优势是具有完备的表达能力,是非过程化集合操作语言,功能强大,能够嵌入高级语言使用。

3.术语

  域:一组具有相同数据类型的值的集合

  笛卡尔积:就是向量的笛卡尔积

  关系:笛卡尔积的子集

  元组:关系中的每个元素

  属性:列的名字

  候选码:可以唯一标识一个元组的属性组合

  主码:从候选码中选定一个作为主码

  外部码:外码(当前关系中该码是另一个关系中的主码)

  关系模式:关系的描述

  关系:笛卡尔积的子集

  关系是关系模式在某一时刻的内容

  关系数据库

  型和值:型是在描述一个物体,值是这个物体在某一时刻的具体状态

4.试述关系模式的完整性规则。在参照完整性中,为什么外部码属性值可以为空?什么情况下才可以为空?

  实体完整性:主属性不可取空值

  参照完整性:外码取值必须满足如下条件:当且仅当外码的被参照属性值均为空值时,外码可取空值;其他情况下,外码不可空且外码取值必须来自于被参照属性值集合

  用户定义完整性

5.试述等值连接与自然连接之间的区别与联系

  假设有关系R与关系S,等值连接是从R和S的笛卡尔积中选取指定属性值相等的元组。自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且会在结果中把相同的属性组去掉。

6.关系代数中的基本运算有哪些?如何用这些基本运算来表示其它运算?

  8种关系代数运算:并、交、差、除、笛卡尔积、投影、选择、连接

  5种基本运算:并、差、笛卡尔积、投影、选择

三、关系数据库标准语言SQL

1.试述SQL的特点

  综合统一:SQL同时具有数据定义语言DDL、数据操纵语言DML、数据控制语言DCL

  高度非过程化:用户只需要提出做什么,不需要指明怎么做

  面向集合的操作方式:操作对象、查询结果等都是元组的集合

  既可以在SQL内部使用,还可以嵌入其他高级语言当中

  语言简洁、易学易用

2.试述SQL的定义功能

  SQL的数据定义功能包括定义表、定义视图和定义索引

  CREATE TABLE;DROP TABLE;

  CREATE VIEW;DROP VIEW;

  CREATE INDEX;DROP INDEX;

3.什么是基本表?什么是视图?两者之间的区别和联系是什么?

  基本表是独立存在的表。在SQL中,一个关系对应一个表。视图是从一个或多个基本表导出的表,本身不独立存储在数据库中,是一个虚表,即数据库中只存放视图的定义而不存放其对应的数据,这些数据仍然存在于导出视图的基本表中。视图在用户使用时与基本表等同,可以像基本表一样使用视图,也可以在视图上继续定义视图。

4.试述视图的优点

  简化用户操作、使用户能够从多种角度看待同一数据、视图对重构数据库提供一定程度的逻辑独立性、视图能够对机密数据提供安全保护

5.是否所有视图都可以更新?为什么?

  不是,视图是不实际存储数据的虚表,因此对视图所做的更新最终要转换为对基本表的更新。因为有些视图的更新不能唯一地、有意义地转换成对应的基本表更新,所以并非所有视图都是可更新的。

6.哪类视图是可以更新的?哪类视图是不可更新的?各举一例说明之。

  基本表的行列子集视图通常是可以更新的。若视图的属性来自聚集函数、表达式,则该视图肯定是不可更新的。

四、数据库安全性

1.什么是数据库的安全性?

  数据库的安全性是指保护数据库以防止非法使用所造成的数据泄露、更改或破坏。

2.数据库安全性和计算机系统安全性之间有什么联系?

  安全性问题不是数据库系统所独有的,所有的计算机系统都存在这个问题。只是在数据库系统中,大量数据集中存放,而且为许多最终用户直接共享,从而使安全性问题显得更为突出。

  系统安全保护措施是否有效是数据库系统的主要指标之一。

  数据库系统的安全性和计算机系统的安全性,包括计算机硬件、操作系统、网络系统等的安全性,是紧密联系、相互支持的。

3.试述实现数据库安全性控制常用方法和技术。

  1)用户标识和鉴别:由系统提供一定的支持,让用户标志自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后系统才能提供使用权。

  2)存取控制:通过用户权限定义和合法权限检查确保只有拥有合法权限的用户才能访问数据库,所有未授权人员均无法存取数据。

  3)视图机制:为不同的用户定义视图,通过视图机制把要保密的数据对无权限用户隐藏起来,从而自动的对数据提供一定程度的安全保护。

  4)审计:建立审计日志,把用户对数据库的所有操作自动记录下来并放入审计日志中。DBA可利用审计跟踪信息来重现导致数据库现状的一系列事件,找出非法存取数据的人、时间和内容等。

  5)数据加密:对所存储和传输的数据进行加密处理,从而使得不掌握解密算法的人无法获知数据。

4.什么是数据库中的自主存取控制方法和强制存取控制方法?

  自主存取控制方法:定义各个用户对不同数据对象的存取权限。当用户要访问数据库时,首先检查其存取权限,以防止非法用户对数据库进行存取。

  强制存取控制方法:每一个数据对象被强制的标注一定的加密级别,每位用户也被强制的授予某一级别的许可证。系统规定只有具有某一许可证级别的用户才能存取某加密级别的数据对象。

  “自主”的含义是,用户可以将自己所拥有的权限“自主”地授予他人,即用户具有一定地“自主”权。

5.SQL提供了哪些数据控制(自主存取控制)语句?试举例说明其用法。

  SQL自主存取控制是通过GRANT语句和REVOKE语句来实现地的。

6.为什么强制存取控制提供了更高级别的数据库安全性?

  强制存取控制是对数据本身进行加密级别标记,无论如何复制数据,标记和数据都是一个不可分割的整体,只有符合加密级别标记要求用户才能操纵数据,从而提供更高级别的安全性。

7.什么是数据库的审计功能?为什么要提供审计功能?

  审计功能是指DBMS的审计模块在用户对数据库执行操作的同时,把所有操作记录到系统的审计日志中。

  DBA可利用审计跟踪信息来重现导致数据库现状的一系列事件,找出非法存取数据的人、时间和内容等。

8.统计数据库中存在哪些特殊的安全性问题

  统计数据库允许用户查询聚集类型的信息,如合计、均值、最值等,不允许查询单条记录信息。但是,人们可以从合法查询中推导出非法信息,即存在隐蔽的信息通道,这是统计数据库所要研究和解决的特殊的安全性问题。

五、数据库完整性

1.什么是数据库的完整性?

  数据库的完整性是指数据的正确性和相容性。

2.数据库的完整性概念与数据库的安全性概念之间存在什么区别和联系?

  二者是不同的概念,但存在一定的联系。

  前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出所造成的无效操作和错误结果。

  后者是保护数据库,防止被恶意破坏和非法存取。

  安全性措施防范对象是非法用户和非法操作;完整性措施的防范对象是不合语义的数据。

3.什么是数据库的完整性约束条件?

  完整性约束条件是指数据库中的数据所应满足的语义约束条件。

4.在关系系统中,当操作违反实体完整性、参照完整性和用户定义的完整性约束条件时,通常如何进行处理?

  对于违反实体完整性和用户定义的完整性的操作,一般都采用拒绝执行的方式进行处理。而对于违反参照完整性的操作,并非都是简单地拒绝执行,有时要根据应用语义执行一些附加地操作,以保证数据库的正确性。(如级联删除、设为空值等)

六、关系数据理论

1.术语

  1)函数依赖:设R(U)是一个关系模式,U是R的属性集合,X和Y是U的子集。对于R(U)的任意一个可能的关系r,如果r中不存在两个元组,其在X上的属性值相同,而在Y上的属性值不同,则称“X函数确定Y”或“Y函数依赖于X”,记作\(X\rightarrow Y\)

  2)部分函数依赖:在R(U)中,如果\(X\longrightarrow Y\),并且对于X的任何一个真子集\(X'\),都有\(X' \nrightarrow Y\),则称Y对X完全函数依赖,记为$$X \stackrel{F} \longrightarrow Y $$
  若\(X\rightarrow Y\)但Y不完全函数依赖于X,则Y对X部分函数依赖,记为$$X \stackrel{F} \longrightarrow Y$$

  3)完全函数依赖:见上 2)

  4)传递函数依赖:如果\(X\rightarrow Y, Y\nrightarrow X, Y\nsubseteq X, Y\rightarrow Z, Z\nsubseteq Y\),则称Z对X传递函数依赖。

  5)候选码:K为R中的属性或属性组合,若U完全函数依赖于K,则K为候选码。

  6)主码:从候选码任选其一作为主码。

  7)外部码:关系模式R中的属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是关系R的外部码。

  8)全码:R的整个属性组是码,称为全码。

  9)1NF:如果一个关系模式R的所有属性都是不可分割的基本数据项,则\(R\in 1NF\)

  10)2NF:若一个关系模式是1NF,并且每一个非主属性都完全函数依赖于R的码,则\(R\in 2NF\)

  11)3NF:关系模式R<U,F>中不存在这样的码X、属性组Y及非主属性\(Z(Z\nsubseteq Y)\)使得X可以函数确定Y,但是Y不能函数确定X,Y可以函数确定Z,则称R属于3NF。

  12)BCNF:关系模式R是1NF,若X函数确定Y且Y不属于X时X必含有码,则R属于BCNF。

  13)多值依赖:设R是U上的一个关系模式,X、Y、Z是U的子集,并且Z=U-X-Y。关系模式R(U)中的多值依赖\(X\rightarrow \rightarrow Y\)成立,当且仅当R中的任意关系r,给定一对(x,z),有一组Y值,这组值仅取决于x而与z无关。

  14)4NF:关系模式R是1NF,如果对于R的每一个非平凡多值依赖\(X\rightarrow \rightarrow Y(Y\nsubseteq X)\),X都含有码,则称R为4NF。

七、数据库设计

1.试述数据库设计过程

  1)需求分析

  2)概念结构设计

  3)逻辑结构设计

  4)数据库物理设计

  5)数据库实施

  6)数据库运行与维护

2.试述数据库设计过程各个阶段的设计要点。

  1)需求分析:准确地了解和分析用户需求(包括数据及其处理)。

  2)概念结构设计:通过对用户需求进行综合、归纳与抽象,形成独立于具体DBMS的概念模型。

  3)逻辑结构设计:将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化。

  4)数据库物理设计:为逻辑数据模型选取一个最适合特定应用环境特定应用环境的物理结构(包括存储结构和存取方法)

  5)数据库实施:设计人员运用DBMS所提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计结果来建立数据库,编制和调试应用程序,组织数据入库,并进行试运行。

  6)数据库运行与维护:在数据库系统运行过程中,对其进行客观的评价、调整和修改。

八、数据库编程

九、关系查询处理和查询优化

十、数据恢复技术

1.试述事务的概念及事务的四个特性。恢复技术能保证事务的哪些特性?

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

  事务具有四个特性ACID:

  原子性Atomicity:事务是数据库的逻辑单位,事务中所包括的诸项操作要么都做,要么都不做。

  一致性Consistency:事务执行的结果必须是使数据库从某个一致性状态转变到另一个一致性状态。

  隔离性Isolation:一个事务的执行不能被其他事务干扰,即一个事务内部的操作及所使用的数据对其他并发事件是隔离的,并发执行的各个事务之间不能互相干扰。

  持续性Durability:持续性也称为永久性,是指事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其它操作或故障不应对其执行结果产生任何影响。

  恢复技术可以保障事务的原子性、一致性与连续性。

2.为什么事务非正常结束会影响数据库的正确性?

  举例说明,如果用户定义了一个任务包含两个操作,第一个操作是删除一组数据,第二个操作是插入一组数据,如果因为事务非正常结束导致事务只执行了第一个删除操作,那么此时数据库的一致性就被破坏了,从而影响了数据库的正确性。

3.数据库中为什么要有恢复子系统?它的功能是什么?

  因为计算机系统中的硬件故障、软件错误、操作员的失误或者恶意的破坏都是不可避免的,这些故障轻则导致当前运行的任务非正常中断,影响数据库中数据的正确性,重则破坏数据库,导致数据库的全部或部分数据丢失,因此必须要有恢复子系统。

  恢复子系统的功能是:把数据库从错误状态恢复到某一已知的正确状态,也称为一致状态或完整状态。

4.数据库运行过程中可能产生的故障有哪几类?哪些影响事务的正常执行?哪些故障破坏数据库?

  事务内部故障、系统故障;介质故障、计算机病毒故障。

5.数据库恢复的基本技术有哪些?

  数据转储和登录日志文件是数据库恢复的基本技术。

  当系统在运行过程中发生故障时,利用所转储的数据库后备副本和日志文件就可以将数据库恢复到故障发生前的某个一致性状态。

6.数据库转储的意义是什么?试比较各种数据转储方法。

  数据转储是数据库恢复所采用的基本技术。所谓转储即DBA定期地将数据库复制到磁带或另一个磁盘上保存起来。当数据库遭到破坏后,可以将后备副本重新装入,将数据库恢复到转储时的状态。

  静态转储:数据库中无运行事务时进行转储

  动态转储:可以在事务运行时进行转储,但需要另外建立日志文件记录转储过程中进行的事务

  转储还可以分为海量转储和增量转储

7.什么是日志文件?为什么要设立日志文件?

  日志文件是用来记录事务对数据库所做的更新操作的文件

  设立日志文件的目的是:进行事务故障恢复;进行系统故障恢复;协助后备副本进行介质故障恢复。

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

  写日志文件和写数据库是两个不同的操作,在执行登记日志文件时依旧存在任务非正常结束的可能,如果先写了数据库,任务非正常中断后,这次操作未被记录下来,以后就无法恢复此次修改了。

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

  事务内部故障的恢复:

  事物内部故障的恢复是由DBMS自动完成的,对用户而言是透明的。

  DBMS执行的恢复步骤如下:

  1)反向扫描日志文件,查找该事务的更新操作

  2)对该事务的更新操作执行逆操作

  3)继续反向扫描执行逆操作

  4)直到扫描到该事务的开始标记,事务故障恢复即完成

  系统故障的恢复:

  系统故障可能会造成数据库处于不一致状态,主要体现在以下两个方面:

  1)未完成事务对数据库所做的更新可能已经写入数据库

  2)已提交事务对数据库所做的更新可能还留在缓冲区,未能及时写入数据库

  因此系统故障的恢复操作就是要撤销UNDO故障发生时未完成的事务,重做REDO已完成的事务。

  系统故障恢复步骤如下:

  1)正向扫描日志文件,找出在故障发生之前已经提交的事务队列和未完成的事务队列

  2)对于未提交队列执行UNDO操作

  3)对于已提交队列执行REDO操作

  介质故障的恢复:

  介质故障是最严重的一种故障,其恢复方法是重装数据库,然后重做已完成的事务。具体过程如下:

  1)DBA装入最新的转储数据库后备副本,使数据库恢复到转储时的一致性状态

  2)DBA装入转储结束时的日志文件副本

  3)DBA启动系统恢复命令,由DBMS实现恢复功能,即重做已完成的事务

10.什么是检查点记录?检查点记录包括哪些内容?(理解看书,有图)

  检查点记录是一类新的日志记录。它包括以下内容:

  1)建立检查点时刻所有正在执行的事务的清单

  2)这些事务最近一个日志记录的地址

  建立检查点可以快速定位到所需的日志节点。

11.具有检查点的恢复技术有什么优点?

  在利用日志技术进行数据库的恢复时,恢复子系统必须搜索日志,确定哪些事务要进行REDO操作,哪些事务需要执行UNDO操作。一般来说,需要检查所有的日志记录这样做存在以下两个问题:

  1)搜索整个日志花费大量时间

  2)很多需要REDO的操作实际上已经将其更新写入数据库当中了,恢复子系统又重新执行这些操作,浪费大量时间。

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

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

  2)由该检查点记录得到的检查点建立时所有正在执行的事务清单ACTIVE-LIST.

  

  3)由该检查点开始正向扫描日志文件,新开始的事务放到UNDO,已完成的再移回REDO,直到日志文件结束。

  4)获得REDO队列和UNDO队列后执行对应的操作即可。

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

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

  数据库镜像的用途有以下两点:

  1)用于数据库恢复,发生介质故障时,可以由镜像数据库继续提供使用权,同时DBMS自动利用镜像数据库的数据进行数据库恢复,无须关闭系统和重装数据库副本。

  2)提高数据库的可用性。在尚未出现故障时,当一个用户对某个数据施加排它锁进行修改时,其他用户可以读取镜像数据库中的数据,不必等待该用户释放排它锁。

十一、并发控制

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

  数据库是共享资源,通常有许多事物同时运行。

  当多个事务并发存取数据库中的数据时,会产生同时读取和/或修改同一数据的情况。若对并发操作不加以控制,可能会存取和存储不正确的数据,破坏数据库的一致性。所以,数据库管理系统必须提供并发控制机制。

  并发控制可以保证事务的一致性和隔离性,保证数据库的一致性。

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

  1)丢失修改 Lost Update:两个事务T1和T2读入同一数据并进行修改,T2所提交的结果破坏(覆盖)了T1提交的结果,导致T1所做的修改被丢失。

  2)不可重复度 Non-Repeatable Read:不可重复读是指事务T1读取某一数据后,事务T2对其执行更新操作,使T1无法再现前一次读取的结果。

  3)读脏数据 Dirty Read:读脏数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据将恢复原值,T2所读取的数据就与数据库中的不一致,则T2读取到的就是脏数据。

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

  封锁就是事务T在对某个数据对象(如表、记录等)进行操作之前,先对系统发出请求,对其加锁。加锁后,事务T就对就对该数据对象具有控制权,在事务T释放锁之前,其他事务不能更新此数据对象。

  封锁是实现并发控制的一种非常重要的技术。

  基本的封锁类型有两种:排它锁(X锁)和共享锁(S锁)

  排它锁是写锁,事务申请到X锁时,其他事务无法访问对应数据,既不能再添加任何一种锁。

  共享锁是读锁,事务申请到S锁时,其他事务只能申请S锁,不能申请X锁。

4.如何用封锁机制保证数据的一致性?

  DBM在对数据进行操作时,根据操作类型申请相应的封锁类型,若申请成功则进行相应操作,申请失败则等待重新申请,直到申请成功再进行相应操作。

5.什么是活锁?如何避免活锁?

  就是一直被插队。

  避免活锁就使用先来先服务策略,或者综合加权考虑事务耗时和等待时间来制定服务策略。

6.什么是死锁?如何避免死锁?

  事务T1已经封锁了数据R1,事务T2已经封锁了数据R2,此时事务T1申请封锁R2,只能等待T2释放R2,而T2此时又申请封锁R1,此时便陷入了永久的等待中,形成死锁。

  预防死锁就是破坏死锁产生的条件。通常有两种办法:

  1)一次封锁法:事务在执行前将所需要封锁的数据一次性全部上锁。

  2)顺序封锁法:预先对数据对象规定一个封锁顺序,所有事物都按照这个封锁顺序进行封锁。

7.试给出一种检测死锁的方法。当发生死锁后,如何解除死锁?
  超时法:规定一个时间限制,当事务等待时间超过该时限,则认为死锁发生,实现简单,但容易误判。

  解决方法:撤销此事务的所有锁,UNDO其已执行的所有操作。

  

posted @ 2022-03-07 20:22  逆旅者  阅读(1164)  评论(0编辑  收藏  举报