数据库面试一些问题

 

一.绪论

1.1 数据库系统概述

数据是描述事物的符号记录,是数据库中存储的基本对象。 数据的解释是指对数据含义的说明,数据的含义称为数据的语义,数据与 其语义是不可分割的。 数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。数据库具有永久存储,有组织和可共享三个基本特点。

数据库管理系统:数据库管理系统是位于用户与操作系统之间的一层数据 管理软件。 DBMS 主要功能:数据定义,数据组织、存储和管理,数据操纵。

数据库系统 DBS(Data Base System,简称 DBS)通常由软件、数据库和数 据管理员组成。其软件主要包括操作系统、各种宿主语言、实用程序以及数据 库管理系统。 数据库管理技术经历:人工管理,文件系统,数据库系统三个方面。 数据库类型是根据( 数据模型 )划分的。 数据库系统的特点:数据结构化,数据的共享性高、冗余度低易于扩充, 数据独立性高,数据由数据库管理系统统一管理和控制。 ※数据库系统的核心是数据库管理系统,数据库系统的核心和基础才应该 是数据模型。

1.2 数据模型 数据模型是对现实世界数据特征的抽象,是数据库系统的核心与基础。分为两大类,属于不同层次,一类概念模型(信息模型),二类逻辑模型(有层次、 网状等)和物理模型(数据最底层的抽象)。

层次模型以树结构表示数据间的关系,

网状模型以图结构来表示数据间的 关系,它们都是通过指针链接实现的。 现实世界→概念世界:DBA;概念世界→逻辑模型:DBA;逻辑世界→物理 模型:DBMS; E-R 图:方形(实体),菱形(关系)。 数据模型由数据结构,数据操作,数据的完整性约束三个部分组成。

1.3 数据库系统的结构 在数据模型中有型和值的概念,型是对某一类数据的结构和属性的说明, 值是型的一个具体赋值。一个具体值也是一个实例。模式是相对稳定的,实例是相对变动的。

三级模式:模式,内模式,外模式。模式也称逻辑模式,是数据库中全体 数据的逻辑结构和特征的描述,是所有用户的公共数据试图。外模式也称子模 式,用户可以看到使用的局部数据的逻辑结和特征的描述,是数据库用户的数 据视图。外模式是数据物理结构和存储方式的描述,是数据在数据库内部的组 织方式,且一个数据库只有一个内模式。 数据的独立性是指逻辑独立性和物理独立性。 外模式/模式映像提供了数据的逻辑独立性,数据的逻辑独立性是指用户的 应用程序与数据库的逻辑结构是相互独立的,也就是说,数据的逻辑结构改变 了,用户程序也可以不变。 模式/内模式影响提供了数据的物理独立性,数据的物理独立性是指用户的 应用程序与存储在磁盘上的数据库中数据是相互独立的,也就是说,数据在磁 盘上的数据库中怎样存储是有 DBMS 管理的,用户程序不需要了解,应用程序要 处理的只是数据的逻辑结构,这样当数据的物理存储改变了,应用程序不用改 变。 数据与程序之间的独立性使得数据的定义和描述可以从应用程序中分离出 来。 外模式、模式在逻辑设计阶段得到,内模式在物理设计阶段得到。

二.关系数据库

2.1 关系数据结构及形式化定义

关系模型包括单一的数据结构——关系,逻辑结构是一张扁平的二维表。 域是一组具有相同数据类型的集合。一个域允许的不同取值个数称为这个 域的基数。 若关系中的某一属性组的值能够唯一标识一个元组,而且子集不能,则称 该属性组为候选码。 关系可以有三种类型:基本关系,查询表,视图表。 关系数据库中,关系模式是型,关系是值。关系模式是对关系模式的描述, 关系是元组的集合。 关系数据库的型称为关系关系数据库的模式,是对关系数据库的描述。关 系数据库模式包括若干域的定义,以及在这些域上定义的若干关系模式。关系 数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数 据库。 在关系模式 R 分解成数据库模式 ρ 时,谈论无损联接的先决条件是数据库 模式 ρ 中的关系模式之间有公共属性,存在泛关系。

2.2 关系操作 关系运算包括选择、投影、连接以及除法。 集合运算是二目运算,包括并、差、交、广义笛卡尔积四种运算。 关系操作,操作的对象和结果都是集合。 关系数据语言:关系代数语言,关系演算语言(元组关系演算语言,域关 系演算语言),具有两者双重特点(SQL)。 SQL 语言是一种高度**非过程化**的语言。 投影是选取相应列组成新元组,连接在多个关系的笛卡尔积中进行筛选出 的新关系,交运算是多个关系之间交集所产生的新的关系。 从关系中挑选出指 定的元组组成新关系的运算称为选取!

2.3 关系的完整性 关系模型中有三类完整性约束:实体完整性,参照完整性,用户自定义完 整性。其中前两者为关系的两个不可变形。 空值是“不知道”,“不存在”,“无意义”的值。

2.4 关系代数 自然连接是构成新关系的有效方法。一般情况下,当关系 R 和 S 进行连接操 作的时候,要求 R 和 S 含有一个或多个共有的属性。而等值连接是从关系 R 和 S 的广义笛卡尔积中选取 A 和 B“属性值”相等的元组,所以只要两个关系里面的 有元祖属性值相等就可以进行。 等值连接与自然连接的区别和联系:自然连接是除去重复属性的等值连接。 自然连接一定是等值连接,反之不一定。等值连接要求相等的属性分量,但不 一定是相同的属性,而自然连接必需是相同的属性。等值连接不把相同的属性 去掉,而自然连接去掉。

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

sql 特点:综合统一,高度非过程化(只需要提出“做什么”,不需要指明 “怎么做”,因而无须了解存储路径。),面向集合的操作方式,以同一种语法 结构提供多种使用方式,语言简洁易学易用。

%代表任意长度,_代表任意的单个字符。 当聚集函数遇到空值时候,除 count 外其他的都要跳过控制。

※在 SELECT 语句中使用 MAX(列名)时,列名应该不限制数据类型。 聚集函数只能用于 select 子句和 group by 中的 having 子句。 子查询的查询条件不依赖父查询,称为不相关查询(由内向外执行)。如果 子查询的查询条件依赖于父查询,这类子查询称为 相关子查询。 sql 中没有全称量词,但是可以把带有全称量词的谓词转换为等价的带有存 在量词的谓词。 参加集合操作的各查询结果的列数必须相同,对应项的数据类型也必须相 同(UNION 自动去掉重复组)。

DQL(Data Query Language):数据查询语言 关键字:select 查询数据

DML(Data Manipulation Language):数据操作语言 关键字:insert、delete、update 插入、删除、更改数据 DDL(Data Denifition Language):数据定义语言 关键字:create、drop、alter 创建、删除、更改表结构 TCL(Trasactional Conrtol Language):事务控制语言 关键字:commit、rollback 用来提交和回滚事务 DCL(Data Conrtol Language):数据控制语言 关键字:grant、revoke 用来设置或更改数据库用户或角色权限

3.1 视图

1.视图是从一个或者几个基本表(**或视图**)导出的表。是一个虚表, 数据库中只存放视图的定义,而不存放视图对应的数据。一旦基本表中的数据 发生变化,从视图中查询出的数据也随之改变。

2.视图的作用:简化用户的操作,以多种角度看待同一数据,提供了一定 的逻辑独立性,提供安全保护,可以更清晰的表达查询。

3.视图包含下列结构是不可以更新的 1:集合运算符 union,union all, intersect,minus 2:distinct 关键字 3:group by,order by,connect by,或者 start with 4:子查询 5:分组函数 6:需要更新的列不是视图定义的 7:具有连接查询(可以更新键值保存表的数据) 8:违反基表的约束条件;连接视图是指基于多表连接查询创建的视图 (一般不容易修改,但通用 instead of 触发器可以实现修改的功能)

4.视图和基本表对比:定义能力强于表,因为可以在多张表上定义视图, 操作能力弱于表,控制能力相当 。

5.视图具有一组命名的属性和相应的属性值,除非是索引视图,否则视图 不占用任何物理存储空间。

3.2 索引

建立索引的目的是加快查询速度的有效手段。 索引是为了提高查询效率的,通过建立索引查询效率会得到提高(X)合适 的索引才可以,并不是所有的索引都行。 索引对数据插入的效率有一定的影响。 对于数据重复度高,值范围有限的列如果建索引建议使用位图索引。 可以在多个列上建立联合索引。 索引是一个指向表中数据的指针,索引是在列上建立的一种数据库对象, 表被撤消时将同时撤消在其上建立的索引。 ※索引是表中数据在内存中的指针,如果指针被撤销,表中的数据无法存 储即不存在。 主索引是对每一个存储块都有一个索引项; 稠密索引是对于 Table 中的每一个记录,都有一个索引项; 稀疏索引是对于 Table 中的部分记录有索引项,是对于 Table 中的索引字段 的部分取值有索引项。 复合索引可以只使用复合索引中的一部分,但必须是由最左部分开始,且 可以存在常量。 为了提高数据的查询效率,需要在数据库中建立索引,在频繁进行排序或 分组(即进行 group by 或 order by 操作)的列上建立索引;考虑列中值的分 布,列的基数越大,索引的效果越好;在 select 关键字后选择列表的列上,建立索引。

索引类型分类: ①主索引:主索引是一种只能在数据库表中建立不能在自由表中建立的索引。 在指定的字段或表达式中,主索引的关键字绝对不允许有重复值。 ②候选索引:和主索引类似,它的值也不允许在指定的字段或表达式中重复。 一个表中可以有多个候选索引。 ③唯一索引:唯一索引允许关键字取重复的值。当有重复值出现时,索引文件 只保存重复值的第 1 次出现。提供唯一索引主要是为了兼容早期的版本。 ④普通索引:普通索引允许关键字段有相同值。在一对多关系的多方,可以使 用普通索引。

索引的特点: 创建索引的好处 (1)通过创建索引,可以在查询的过程中,提高系统的性能 (2)通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性 (3)在使用分组和排序子句进行数据检索时,可以减少查询中分组和排序的时间

创建索引的坏处 (1)创建索引和维护索引要耗费时间,而且时间随着数据量的增加而增大 (2)索引需要占用物理空间,如果要建立聚簇索引,所需要的空间会更大 (3)在对表中的数据进行增加删除和修改时需要耗费较多的时间,因为索引也 要动态地维护

四.数据库安全性

数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露。 非法使用数据库:编写合法程序绕过 DBMS,编写应用程序执行非授权,通 过合法查询推导。 用户身份鉴别是数据库管理系统提供的最外层安全保护措施。 常用存取控制方法有自主存取控制(灵活)和强制存取控制(严格)。 用户权限是由两个要素组成的。 定义存取权限称为授权。 GRANT .....**TO** ....,REVOKE.....**FROM**...; 在数据库的安全性控制中,为了保护用户只能存取他有权存取的数据。在 授权的定义中,数据对象的(范围越小 ),授权子系统就越灵活。 数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。 视图机制间接地实现支持存取谓词的用户权限定义。 审计功能把用户对数据库的所有操作自动记录下来放入审计日志。审计员 可以利用审计日志监控数据库的各种行为,重现导致数据库现有状况的一系列 事件,找出非法存取数据的人,时间和时间。 审计设置以及审计日志一般都存储再数据字典中。 数据库安全审计系统提供了一种事后检检查的安全机制。 数据加密是防止数据库数据在存储和传输中失密的有效手段。 数据加密的基本思想是根据一定的算法将原始数据——铭文变换为不可直 接识别的格式——密文,从而使得不知道解密算法的人无法获知数据的内容。 数据加密主要包括存储加密和传输加密。

五.数据库完整性

数据库的完整性是指数据的正确性和相容性(一致性 )。 数据的完整性事为了防止数据库存在不符合语义的数据 ,也就是防止数据 库中存在不正确的数据。而安全性事保护数据库防止恶意破坏和非法存取。 维护数据库完整性,DBMS 必须实现:提供定义完整性约束条件的机制,提 供完整性检查的方法,进行违约处理。

5.1 实体完整性 两种说明:列级约束条件,标记约束条件。 实体完整性自动检测:检查主码值是否唯一,检查主码的各个值是否为空。 

5.2 参照完整性 参照完整性将两个表中的相应元组联系起来。 一个联系转化为一个关系模式,与该联系相连的各实体的码以及联系的属 性转化为关系的属性,该关系的码则有三种情况:若联系为 1:1,则每个实体 的码均是该关系的后选码;若联系为 1:n,则关系的码为 n 端实体的码;若联 系为 m:n,则关系的码为诸实体码的组合。

5.3 用户定义的完整性 是针对某一具体应哟 ing 的数据必须满足的语义要求。 属性值限制包括:列值非空,列值唯一,检查列值是否满足一个条件表达 式(CHECK 语句)。 通过对完整性约束条件命名,可以更灵活的增加和删除一个完整性约束性 条件。 通过生命断言来指定更具一般性的约束,可以定义设计多个表或者聚集操 作的比较复杂的完整性约束。 触发器是用户定义在关系表上的一类由事件驱动(某一事件符合时才会执 行)的特殊过程。由服务起自动激活,触发器类似于约束,但比约束更灵活, 可以实现更加复杂的操作。 MySQL 的触发器只支持行级出发,不支持语句级触发。

六.关系数据理论

作为一个二维表,关系要符合一个最基本的条件:每一个分量必须是不可 分的数据项,满足了这个条件的关系模式就属于第一范式。 数据依赖是一个关系内部属性与属性之间的一种约束关系。这种约束关系 是通过属性间的相等与否体现出来的数据间相关联系。是现实世界属性间相互 联系的抽象,是数据内在的性质,是语义的体现。 若对于**R(U)的任意一个可能关系 r**,r 中不可能存在两个元组在 X 上 的属性值相等,而在 Y 上的属性值不相等,则称 X 函数确定 Y,或者 Y 函数依赖 于 X,记作 X→Y。 X→Y,Y 不是 X 的子集,则称 X→Y 是非平凡的函数依赖。相反如果 Y 是 X 的 子集,则 X→Y 是平凡的函数依赖。 若 X→Y,Y→X,则 X⬅→Y。 在 R(U)中,如果 X→Y,并且对于 X 的任何一个真子集 X1,都有 X1→Y,则 Y 对 X 完全函数依赖。否则,Y 对 X 部分函数依赖。 在 R(U)中,如果 X→Y(Y 不是 X 的真子集),Y 决定不了 X,Y→Z(Z 是 Y 的真子集),则称 Z 对 X 传递函数依赖。 主码和外码提供了一个表示关系间联系的手段。 一个低一级范式的关系模式通过分模式分解可以转换为若干个高一级范式 的关系模式的集合,这个过程叫规范化。各种范式之间的关系: 范式判断:第一范式→如果每一个非主属性完全函数依赖于任何一个候选 码→第二范式→消除非主属性传递依赖于候选码→第三范式→存在函数依赖项 的左边都为候选码→BCNF 范式。 在关系模式 DB 中,任何二元关系模式的最高范式必定是 BCNF。 对于各种范式之间的关系如下: 5NF⊂ 4NF⊂ BCNF ⊂3NF ⊂ 2NF⊂ 1NF 。 设 R(U)是属性集 U 上的一个关系模式。X,Y,Z 是 U 的子集,并且 Z=U- X-Y。关系模式 R(U)中多值依赖 X→→Y 成立,并且仅当对 R(U)的任一关系 r,给定的一个(x,z)值,有一组 Y 的值,这组值仅仅决定于 x 值而与 z 值无 关。若 X→→Y,而 Z 是空集,则称 X→→Y 为平凡的多值依赖。 4NF 就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。 规范化的基本思想是逐步消除数据依赖中不合适的部分,采用“一事一地” 的模式设计原则,实质上是概念的单一化。 关系规范化中的 删除 异常是指不该删除的数据被删除。

七.数据库设计

数据库设计 6 个阶段:需求分析,概念结构设计,逻辑结构设计,物理结构设计,数据库实施,数据库运行和维护。

需求分析阶段:是整个设计过程的基础,分析用户的需求,包括数据、 功能和性能需求,完成数据字典设计。

概念结构设计:是整个数据库设计的关键,形成一个独立于具体数据 库管理系统的概念模式,主要采用 E-R 模型进行设计,包括画 E-R 图。

逻辑结构设计:将概念结构转换为某个数据库管理系统所支持的数据模型, 通过将 E-R 图转换成表,实现从 E-R 模型到关系模型的转换。

物理结构设计:为逻辑数据模型选取一个最适合应用环境的物理结构,主 要是为所设计的数据库选择合适的存储结构和存取路径。

数据库实施:根据逻辑结构和物理结构的结果建立数据库,编写与调试应 用程序,组织数据入库,并进行调试。

数据库运行和维护:不断的进行维护,调整和修改。 数据字典是进行详细的数据收集和数据分析所获得的主要成果,是关于数 据库中数据的描述,既元数据,而不是数据本身。数据字典是在需求分析阶段 建立,在数据库设计过程中不断修改、充实、完善。 数据项是数据的最小组成单位,若干数据项可以组成一个数据结构,不可 再分的数据单位。

数据结构反应了数据之间的组合关系。 E-R 图是用来描述现实世界的概念模型。设计方法有:自顶向下,自底向上, 逐步扩张,混合策略。包括实体(方形),属性(椭圆),实体之间的联系(菱 形)。

概念数据模型是现实世界到信息世界的第一层抽象,数据结构模型是对现 实世界进行的第二层抽象。 设计数据库概念结构时,常用的数据抽象方法是概括和分类,聚集。 存储过程是存储在数据库中的代码,具有很多优点。可通过预编译机制提 高数据操作的性能,可减少客户端和服务器端的网络流量,可实现一定的安全 控制。 E-R 图向关系模型的转换一般遵循如下原则: 一个实体型转换为一个关系模式; 一个 1:1 联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系 模式合并; 一个 1:n 联系可以转换为一个独立的关系模式,也可以与 n 端对应的关系模式 合并; 一个 m:n 联系转换为一个关系模式。

八.数据库编程

SQL 的特点之一就是交互式和嵌入式两种不同的使用方式下 SQL 语法基本上 是一致的。 嵌入式 SQL 是将 SQL 语句嵌入到程序设计语言中,被嵌入的程序设计语言简 称宿主语言,简称主语言。 当将 SQL 语句嵌入到主语言程序时,为协调两者而引入游标。 通过游标通 信,一条 SQL 语句原则上可以产生或处理多条记录,而一组主变量一次只能存 放一条记录。因此,仅使用主变量并不能完全满足 SQL 语句向应用程序输出数 据的要 求。为了解决这个问题,嵌入式 SQL 引入了游标的概念来协调这两种不 同的处理方式。游标是系统开设的一个数据缓冲区,存放 SQL 语句的执行结果 集。每个游 标区都有一个名字,用户可以用 SQL 语句逐一从游标中获取记录, 并赋给主变量,交由主语言进一步处理。

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

关系数据库关系系统查询处理可以分为:查询分析,查询检查,查询优化, 查询执行。 关系数据库管理系统一般都用查询树,也称为语法分析树来表示扩展的关 系代数表达式。 查询优化就是选择一个搞笑执行的查询处理策略,按照优化层次分为代数 优化和物理优化。 选择操作只涉及一个关系,一般采用全表扫描或者基于索引扫描。索引扫 描,如果选择条件中的属性有索引,则先通过索引找出满足条件的元组指针 , 然后通过元组指针在查询的基本表中找到元组。 连接操作时查询处理中**最常用**也是最耗时的操作之一。因为是广义笛 卡儿积。 查询树的启发式优化:选择运算应尽早的完成,把投影运算和选择运算同 时进行,把头应同其前或者后的双目运算结合起来,把某些选择同在它之前要 执行的笛卡儿积结合起来称为一个连接运算,找出公共子表达式。其中最常见 优化为第一和第二条!

十.数据恢复

10.1 事务的基本概念 所谓失误是用户定义的一个数据库操作序列,这些操作要么全做,要么全 不做,是一个不可分割的工作单位。是恢复和并发控制的基本单位。一个程序 包含多个事物。 提交:执行完 SQL,数据库在一个最近状态。回滚:回滚到某一个正常的状 态。 事物的 4 个特性:A(原子性)C(一致性)I(隔离性)D(持续性)。

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

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

隔离性:一个事物的执行不能被其他事物干扰。

持续性:指一个事务一旦提交,它对数据库中数据的改变就应该是永久性 的。 保证事物 ACID 特性是事物管理的重要任务。

事物 ACID 特性可能遭到破坏, 其原因有:多个事物并行运行,不同事物的操作交叉执行。其次是事务在运行 过程中被强行停止。

10.3 故障的种类

1.事务内部的故障:事务内部故障有的是可以通过事务程序本身发现的, 非预期,不能由事务程序处理。(事务内部故障大部分为非预期),因为事务故 障不能达到预期的终点,所以数据库可能处于不正确状态,需要进行事务取消。

2.系统故障:是指造成系统停止运转的任何事物,使得系统要重新启动。

3.系统故障称为硬故障,介质故障称为硬故障。

4.计算机病毒:是一种认为的故障或破坏,是一些恶作剧者研发的一种计 算机程序。 各类故障对数据库的影响有两种可能性:数据库本身被破坏,数据可能不 正确。 恢复的基本原理十分简单,就是冗余:数据库中任何一部分被破坏或者不 正确的数据可以根据存储在系统别处的冗余数据来重建。

10.4 恢复的实现技术 建立冗余数据最常用的技术是数据转储和登记日志文件。 恢复的基本原理就是利用存储在后备副本、日志文件和数组库镜像中的冗 余数据来重建数据库。 日志文件是用于记录对数据的所有更新操作

十一.并发控制 

允许多个用户同时使用同一数据库的数据库系统称为多用户数据库。 事务可以一个一个串行执行,既每个时刻只有一个事务执行! 在单处理机系统中,事务的并行执行实际上是这些并行事务的并行操作轮 流交叉运行。 并发控制机制是衡量一个数据库管理系统性能的重要标志之一。 ※并发不加以控制会带来数据的不一致性问题,而对并发加以控制了,也 就是加锁了,但是锁的控制没有弄好,才会带来死锁问题

11.1 并发控制概述 事务时并发的基本单位。 为了保证事务的隔离性和一致性,数据库管理系统需要对并发操作系统进 行正确调度。 并发操作带来的数据不一致包括丢失修改、不可重复读、读“脏”数据。 当数据数目增多或者减少的不可重复读称为幻影现象。 幻影的两种情况:事务 T1 按一定条件从数据库中读取了某些数据记录后,事 务 T2 删除了其中部分记录,当 T1 再次按照相同条件读取数据时,发现某些记录 神秘的消失了.;事务 T1 按一定条件从数据库中读取了某些数据记录后,事务 T2 插入了一些记录,当 T1 再次按照相同条件读取数据时,发现多了一些记录. 并发控制机制就是要用正确的方式调度并发操作,使一个用户事务的执行 不受其他事务的干扰,从而避免造成数据的不一致性。 并发控制的主要技术有封锁,时间戳,乐观控制法和多版本并发控制。 在 DB 技术,未提交的随后被撤消了的数据,称为脏数据。

11.2 封锁 封锁使实现并发控制的一个非常重要技术。 排他锁:也称写锁,允许读和写,其他事务不能再对其加任何的锁。 共享锁:也称读锁,允许读,其他事务可以对其进行加共享锁。

11.4 活锁和死锁 活锁:某一个事务永远处于等待状态。可以采用先来先服务的策略。 死锁:当 T1 在等待 T2,而 T2 又在等待 T1 的局面,T1 和 T2 两个事务永远 不能结束,形成死锁。产生原因:两个或多个事务都封锁了一个数据对象,然 后请求对已被其他事务封锁的数据对象加锁,从而出现死锁。可以采取一次封 锁法和顺序封锁法来预防。 诊断死锁的方法和操作系统类似:一般使用超时法和事务等待法。 解除死锁的通用方法是选择一个处理死锁代价最小的事务,将其撤销,释 放此事务持有的所有锁,使其他事务得以继续运行下去。

11.5 并发调度的可串行行 多个事务的并发执行是正确,当且仅当其结果与按某一次序串行地执行这 些事务时的结果相同,称这种调度策略为可串行化调度。 可串行化是并发事务正确调度的准则。 冲突操作是指不同的事物对同一数据的读写操作和写写操作。 若一个调度是冲突可串行化,则一定是可串行化的调度。 冲突可串行化调度是可串行化调度的充分条件,不是必要条件。

11.6 两段锁协议 目前数据库管理系统普遍采用两段锁的方法实现并发调度的可串行化,从 而保证调度的正确性。 所谓“两段”锁的含义是:事务分为两个阶段,第一阶段是获得封锁,称 为扩展阶段。第二阶段是释放封锁,称为收缩阶段。 事务遵守两段锁协议是可串行化调度的充分条件,而不是必要条件。

11.7 封锁的粒度 封锁对象的大小称为封锁粒度。封锁对象可以是逻辑单元(属性值,属性 值的集合等),也可以是物理单元(页,物理记录)。 封锁粒度与系统的并发度和并发控制的开销密切相关。 多粒度封锁协议允许多粒度树中的每个结点被独立地加锁。对一个结点加 锁意味着这个结点的所有后裔结点也被加以同样类型的锁。 显式封锁是应事务的要求直接加到数据对象上的锁;隐式封锁式该数据对 象没有被独立加锁,是由于其上级结点加锁而使该数据对象加上锁。 意向锁的含义是如果对一个结点加意向锁,则说明该结点的下层结点正在 被加锁,对任一结点加锁时,必须对它的上层结点加意向锁。 在具有意向锁的多粒度封锁方法中,任意事务 T 要对一个数据对象加锁,必 须先对它的上层结点加意向锁。申请封锁时应该按自上而下的次序

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值