前言
今天刚结束考试,考的范围基本没有超过这套重点内容,觉得整理的这份资料还算比较有用,遂睡前整理了下分享给大家,希望能帮到要准备数据库期末又时间紧张的学弟学妹~
文章参考:
1.课程老师发《数据库期末考试复习重点(2022)》
2.HNU数据库系统教学PPT
3.《数据库系统概论》官网考试平台 http
重点大纲
- 前言
- 文章参考:
- 第一章 绪论
- 1.1 数据库的4个基本概念(数据、数据库、数据库管理系统和数据库系统)
- 1.2数据库系统的特点、数据库系统与文件系统的区别与联系
- 1.3数据库系统的三级模式结构(外模式、模式、内模式)
- 数据库的二级映像功能与数据独立性(逻辑独立性、物理独立性)
- 第二章 关系数据库
- 2.1 码、主属性、非主属性、外码
- 2.2 关系代数 并、差、交、笛卡尔积、选择、投影、连接、除运算。
- 2.3关系代数查询及关系运算
- 第三章 关系数据库标准语言SQL
- 3.1 SQL的基本概念,基本表、视图。
- 3.2基本表及视图的定义、查询、更新
- 3.3 数据查询:常用的SQL语句,常用的查询、修改、删除、分组、排序等SQL 语句
- 3.4 能熟练使用通配符
- 3.5多表连接查询、复合条件连接查询、嵌套查询
- 3.6 数据更新 插入数据、修改数据、删除数据
- 3.7 空值的处理
- 第四章 数据库安全性
- 4.1 数据库的安全性
- 4.2实现数据库安全性控制常用的方法和技术
- 4.3能熟练使用SQL语句完成对关系模式的授权/回收操作
- 第五章 数据库的完整性
- 5.1数据库的完整性
- 5.2实体完整性、参照完整性、用户定义完整性
- 第六章 关系数据理论
- 6.1对函数依赖、码、主属性、非主属性、外码等有深入的理解
- 多值依赖:
- 6.2掌握规范化理论,能够判断给定关系模式的规范化程度
- 6.3掌握模式的分解,能够按要求对给定关系模式进行分解,修改为符合更高一级的范式
- 6.4 掌握数据依赖的公理系统,能求解闭包和最小依赖集。
- 求XF+的算法
- 极小函数依赖集
- 第七章 数据库设计
- 7.1掌握数据库的设计方法与设计的步骤
- 7.2根据语义设计系统的E-R图,并将E-R图转换为关系模式(写出关系名称和所有属性)
- 7.3数据库设计方面有自己独到的理解
- 第八章 嵌入式SQL
- 8.1理解主变量
- 8.2理解嵌入式SQL中引入游标的作用
- 8.3 理解存储过程
- 第九章 关系查询处理和查询优化
- 9.1关系代数表达式的优化策略及步骤
- 9.2代数优化、物理优化
- 第十章 数据库恢复技术
- 10.1对事务的基本概念及事务的ACID特性有一定的理解和掌握
- 10.2 理解数据库系统中故障的种类
- 10.3掌握数据库恢复技术(数据转储、登记日志文件),对恢复子系统及其功能有一定的掌握。
- 10.4掌握并能熟练使用具有检查点的恢复技术。
- 第十一章 并发控制
- 11.1并发控制及并发操作带来的数据不一致性
- 11.2封锁技术及基本封锁类型(排他锁和共享锁)、三级封锁协议
- 11.3活锁和死锁,死锁的预防、诊断与解除
- 11.4可串行化调度及两段锁协议,判断一个并发调度是不是冲突可串行化调度。
- 11.5理解封锁粒度及多粒度封锁。
- 11.6能熟练使用并发控制进行事务调度
第一章 绪论
1.1 数据库的4个基本概念(数据、数据库、数据库管理系统和数据库系统)
数据:描述事物的符号记录,是数据库中存储的基本对象
数据库:是长期存储在计算机内,有组织的,可共享的大量数据的集合
数据库管理系统:位于用户与操作系统之间的一层数据管理软件;是基础软件,是一个大型复杂的软件系统
数据库系统:由数据库、数据库管理系统、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统
1.2数据库系统的特点、数据库系统与文件系统的区别与联系
特点:
-
数据结构化
-
数据的共享性高,冗余度低且易扩充
-
数据的独立性高
-
数据由数据库管理系统统一管理和控制
区别:
文件系统面向某一应用程序,共享性差,冗余度大,独立性差,记录内有结构,整体无结构,应用程序自己控制。
数据库系统面向现实世界,共享度高,冗余度小,具有高度的物理独立性和一定的逻辑独立性,整体结构化,用数据模型描述,由数据库管理系统提供数据安全性、完整性、并发控制和恢复能力
联系:
文件系统和数据库系统都是计算机系统中管理数据的软件。数据库中数据的组织和存储是通过操作系统中文件系统来实现的。
1.3数据库系统的三级模式结构(外模式、模式、内模式)
数据库的二级映像功能与数据独立性(逻辑独立性、物理独立性)
外模式:亦称子模式或用户模式,是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
模式:亦称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。模式描述的是数据的全局逻辑结构。
内模式:亦称存储模式,是数据在数据库系统内部的表示,即对数据的物理结构和存储方式的描述。
三级模式结构的优点:数据库的三级模式是对数据的三个抽象级别,它把数据的具体组织留给DBMS管理,使用户能逻辑抽象地处理数据,而不必关心数据在计算机中地存储和表示。
为了能在内部实现这三个抽象层次地联系和转换,数据库系统在这三级模式之间提供了两层映像:外模式/模式映像和模式/内模式映像。正是这两层映像保证了数据库中的数据能够具有较高的逻辑独立性和物理独立性。
逻辑独立性:当模式改变时,由数据库管理员对各个外模式/模式的映像作相应改变,可以使外模式保持不变。应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性。
物理独立性:当数据库的存储结构改变,由数据库管理员对模式/内模式映像作相应改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性。
第二章 关系数据库
2.1 码、主属性、非主属性、外码
候选码:能唯一地标示一个元组的某一个属性组,而其子集不能
全码:关系模式的所有属性组是这个关系模式的候选码
主码:若一个关系有多个候选码,则选定其中一个为主码
主属性:候选码的诸属性称为主属性
非主属性:不包含任何候选码中的属性
外码:设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是R的外码
2.2 关系代数 并、差、交、笛卡尔积、选择、投影、连接、除运算。
除运算步骤:R÷S
1.找R中和S不重合属性的取值集合
2.对每个值求在重合属性上象集
3.求S在重合属性组上的投影
4.象集包含投影的值为答案
2.3关系代数查询及关系运算
题目中含有"至少(多个)","全部"的就包含除法,除数为这个至少/全部的限制
第三章 关系数据库标准语言SQL
3.1 SQL的基本概念,基本表、视图。
SQL:结构化查询语言,是关系数据库的标准语言
基本表:本身独立存在的表;SQL中一个关系就对应一个基本表;一个或多个基本表对应一个存储文件;一个表可以带若干索引
视图:是从一个或多个基本表中导出的表;数据库中只存放视图的定义而不存放视图对应的数据;视图是一个虚表;用户可以在视图上再定义视图
3.2基本表及视图的定义、查询、更新
表
定义
CREATE TABLE Student(
Sno CHAR(9) RRIMARY KEY,
Sname CHAR(20) UNIQUE,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);
CREATE TABLE SC(
Sno CHAR(9),
Cno CHAR(4),
Grade SMALLINT,
PRIMARY KEY(Sno,Cno),
FOREIGN KEY (Sno) REFERENCES Student(Sno),
FOREIGN KEY (Cno) REFERENCES Course(Cno)
);
更新:
ALTER TABLE Student ADD S_en DATE;
ALTER TABLE Student ALTER COLUMN Sage INT;
删除:
DROP TABLE Student CASCADE;
DROP TABLE Student RESTRICT;
视图
定义
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept='IS'
WITH CHECK OPTION;
//删除
DROP VIEW IS_Student CASCADE;
//查询更新同基本表 更新无法转换为对基本表的更新则不能执行
3.3 数据查询:常用的SQL语句,常用的查询、修改、删除、分组、排序等SQL 语句
SELECT Sno,Sname FROM Student;
SELECT * FROM Student;
//查询经过计算的值并取别名(空格)
SELECT Sname Name,2014-Sage BIRTHDAY,LOWER(Sdept) DEP FROM Student;
//去除表中重复的行
SELECT DISTINCT Sno FROM SC;
//简写条件
WHERE Sage BETWEEN 20 AND 23; //包括20和23
WHERE Sdept IN ('CS','MA');
WHERE Sdept='CS' AND Sage<20;
//ORDER BY
SELECT Sno,Grade
FROM SC
WHERE Cno='3'
ORDER BY Grade DESC; //默认为ASC 升序
//聚集函数 除了COUNT,还有AVG MAX MIN SUM
SELECT COUNT(*) FROM Student; //查询学生总人数
SELECT COUTN(DISTINCT Sno) FROM SC; //查询选修了课程的学生人数
//GROUP BY
//求各个课程号及相应的选课人数
SELECT Cno,COUNT(Sno)
FROM SC
GROUP BY Cno;
//使用HAVING选择满足条件的组
SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*)>3;
3.4 能熟练使用通配符
WHERE Sname LIKE '刘%';
WHERE Sname NOT LIKE '欧_';
WHERE Cname LIKE 'DB\_%I__' ESCAPE'\'; \\ ESCAPE'\'表示“\”为换码字符
3.5多表连接查询、复合条件连接查询、嵌套查询
多表连接查询
//1.等值
WHERE Student.Sno=SC.Sno
//2.自然连接 显式指出保留哪个值
SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROM Student,SC
WHERE Student.Sno=SC.Sno;
//多表
SELECT Student.Sno,Sname,Cname,Grade
FROM Student.Sno=SC.Sno
AND SC.Cno=Course.Cno;
复合条件连接查询
SELECT Student.Sno,Sname
FROM Student,SC
WHERE Student.Sno=SC.Sno AND
SC.Cno='2' AND SC.Grade>90;
自身连接 需取别名以区分
SELECT FIRST.Cno,SECOND.Cno
FROM Course FIRST,Course SECOND
WHERE FIRST.Cpno=SECOND.Cno;
嵌套查询
SELECT Sno
FROM Studen
WHERE Sdept IN
(
SELECT Sdept
FROM Student
WHERE Sname='刘晨'
);
省EXIST
UNION 并集去重
UNION ALL 并集不去重
INTERSECT 交集
EXCEPT 差集
3.6 数据更新 插入数据、修改数据、删除数据
插入
INSERT INTO Student(Sno,Sname,Sage) VALUES('200801','陈东',18);
INSERT INTO SC VALUES('200801',1,NULL);
INSERT INTO Dept_age(Sdept,Avg_age)
SELECT Sdept,AVG(Sage)
FROM Student
GROUP BY Sdept;
修改
UPDATE Student SET Sage=22 WHERE Sno='234345';
UPDATE SC
SET Grade=0
WHERE Sno IN
(SELECT Sno
FROM Student
WHERE Sdept='CS'
);
删除
DELETE FROM Student WHERE Sno='23456';
DELETE FROM Studen;
DELETE
FROM SC
WHERE Sno IN
(
SELECT Sno
FROM Student
WHERE Sdept='CS'
);
3.7 空值的处理
WHERE Grade IS NULL;
WHERE Grade IS NOT NULL;
第四章 数据库安全性
4.1 数据库的安全性
保护数据库以防止不合法使用所造成的数据泄露、更改或破坏
4.2实现数据库安全性控制常用的方法和技术
1.用户标识和鉴别:该方法由系统提供一定的方法让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权
2.存取控制:通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。例如C2级别中的自主存取控制,B1级别中的强制存取控制
3.视图机制:为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度地安全保护
4.审计:建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中,DBA可以利用审计跟踪信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等
5.数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容
补充:
自主存取控制方法:定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存取权限。防止不合法用户对数据库的存取。
强制存取控制方法:每一个数据对象被(强制地)标以一定的密级,每一个用户也被(强制地)授予某一个级别的许可证。系统规定只有具有某一许可证级别的用户才能存取某一个密级的数据对象。
4.3能熟练使用SQL语句完成对关系模式的授权/回收操作
授权
GRANT UPDATE(Sno) SELECT
ON TABLE Student
TO U1
WITH GRANT OPTION;
//全部权限
GRANT ALL PRIVILIGES
ON TABLE Student,Course
TO U2,U3;
//全部用户
GRANT SELECT
ON TABLE Student
TO PUBLIC;
回收
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4;
REVOKE UPDATE(Sno) SELECT
ON TABLE Student
FROM U1 CASCADE; //级联收回
角色
CREATE ROLE R1;
GRANT SELECT
ON TABLE Student
TO R1;
GRANT R1 TO U1;
REVOKE R1 FROM U1;
REVOKE SELECT
ON TABLE Student
FROM R1;
第五章 数据库的完整性
5.1数据库的完整性
据库的完整性是指数据的正确性和相容性
5.2实体完整性、参照完整性、用户定义完整性
实体完整性:主码 PRIMARY KEY
- 检查主码是否唯一,不唯一则拒绝插入或修改
- 检查主码的各个属性是否为空,只要有一个为空将拒绝插入或修改
参照完整性:外码 FOREIGN KEY
FOREIGN KEY(Sno) REFERENCES Student(Sno)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY(Cno) REFERENCES Course(Cno)
ON DELETE NO ACTION
ON UPDATE CASCADE,
用户定义完整性:
- NOT NULL
- UNIQUE
- CHECK (…) 列级表级皆可
完整性约束命名子句(创建表时)
CONSTRAINT C1 CHECK (Sage<30)
CONSTRAINT C1 NOT NULL
//删除
ALTER TABLE Student
DROP CONSTRAINT C1;
第六章 关系数据理论
6.1对函数依赖、码、主属性、非主属性、外码等有深入的理解
X—>Y:关系r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X
ps:函数依赖是指R的一切关系均要满足的约束条件
非平凡的函数依赖:X—>Y,但Y∉x
平凡的函数依赖:X—>Y,但Y∈x 对任一关系模式,平凡函数依赖必然成立
决定因素:若X—>Y,则称X为这个函数依赖的决定属性组
Y对X完全函数依赖:在R(U)中,如果X—>Y,并且对于X的任一真子集X’,都有X-\->Y。记作:
部分函数依赖:X—>Y,但Y不完全函数依赖于X。记作:
传递函数依赖:
多值依赖:
定义有点绕,其实就是从函数依赖的一对一关系,变成了一对多
平凡的多值依赖:X—>—>Y,而Z=∅,即Z为空
性质:
- 对称性。若X—>—>Y,则X—>—>Z,其中Z=U-X-Y
- 传递性。若X—>—>Y,Y—>—>Z,则X—>—>Z-Y
- 函数依赖可以看做是多值依赖的特殊情况
- 若X—>—>Y,X—>—>Z,则X—>—>YZ
- 若X—>—>Y,X—>—>Z,则X—>—>Y∩Z
- 若X—>—>Y,X—>—>Z,则X—>—>Y-Z,X—>—>Z-Y
多值依赖和函数依赖的区别
- 多值依赖的有效性与属性集的范围有关
候选码:K为R<U,F>中的属性或属性组合,若U完全依赖于K,则K为R的候选码
超码:U部分函数依赖于K。 候选码是最小的超码
主码:候选码中的一个
主属性:包含在任何一个候选码中的属性
全码:整个属性是码(候选码/主码)
外码:关系模式R中的属性X并非R中的码,但X是另一个关系模式的码,则称X为R的外部码
6.2掌握规范化理论,能够判断给定关系模式的规范化程度
6.3掌握模式的分解,能够按要求对给定关系模式进行分解,修改为符合更高一级的范式
实行模式分解的三条准则:
-
分解具有无损连接性(lossless join)
-
分解要保持函数依赖(preserve functional dependency)
-
分解既要保持函数依赖,又要具有无损连接性
6.4 掌握数据依赖的公理系统,能求解闭包和最小依赖集。
Armstrong公理系统
求XF+的算法
极小函数依赖集
第七章 数据库设计
7.1掌握数据库的设计方法与设计的步骤
-
需求分析:准确了解与分析用户需求(包括数据与处理)。
-
概念结构设计:通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。
-
逻辑结构设计:将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化。
-
数据库物理设计:为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。
-
数据库实施:设计人员运用DBMS提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
-
数据库运行和维护:在数据库系统运行过程中对其进行评价、调整与修改。
7.2根据语义设计系统的E-R图,并将E-R图转换为关系模式(写出关系名称和所有属性)
例子:
7.3数据库设计方面有自己独到的理解
第八章 嵌入式SQL
8.1理解主变量
在SQL语句中使用的主语言程序变量简称为主变量
8.2理解嵌入式SQL中引入游标的作用
游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果
用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理
8.3 理解存储过程
存储过程:由过程化SQL语句书写的过程,经编译和优化后存储在数据库服务器中,使用时只要调用即可。
第九章 关系查询处理和查询优化
9.1关系代数表达式的优化策略及步骤
优化策略:
- 选择尽可能先做
- 投影选择同时进行
- 把投影和其前或其后的双目运算(笛卡尔乘积、自然连接)结合起来执行
- 把某些选择同在它前面要执行的笛卡尔积结合起来成为一个连接运算
- 找出公共子表达式
- 选取合适的连接运算
查询优化的一般步骤:
- 把查询转换成某种内部的表示(语法树)
- 利用优化算法,把原始的语法树转换成优化的形式
- 选择低层的存取路径
- 生成查询计划,选择代价最小的
9.2代数优化、物理优化
代数优化:改变查询语句中操作的次序和组合,不涉及底层的存取路径
物理优化:就是要选择高效合理的操作算法或存取路径,求得优化的查询计划
第十章 数据库恢复技术
10.1对事务的基本概念及事务的ACID特性有一定的理解和掌握
事务:是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位
事务是恢复和并发控制的基本单位
事务的ACID特性:
-
原子性
事务是数据库的逻辑工作单位
-
一致性
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态
-
隔离性
一个事务的执行不能被其他事务干扰
-
持续性/永久性
事务一旦提交,它对数据库中数据的改变就是永久的
10.2 理解数据库系统中故障的种类
-
事务内部的故障
-
运算溢出
-
并发事务发生死锁而被选中撤销该事务
-
违反了某些完整性限制而被终止等
恢复:事务撤销(UNDO)
-
-
系统故障
-
整个系统的正常运行突然被破坏
-
操作系统故障
-
数据库管理系统代码错误
-
系统断电
恢复:1.撤销所有未完成的事务;重做所有已提交的事务
-
-
介质故障/硬故障/外存故障
-
磁盘损坏
-
磁头碰撞
-
瞬时强磁场干扰
恢复:需要重新装入发生介质故障前某个时刻的数据库数据副本,并重做(REDO)自备份相应副本数据库之后的所有成功执行事务,将这些事务已提交的更新结果重新反应到数据库中去。无需UNDO操作
-
-
计算机病毒
恢复:通过数据库的安全机制、审计机制等实现对数据库的授权访问和保护
10.3掌握数据库恢复技术(数据转储、登记日志文件),对恢复子系统及其功能有一定的掌握。
数据转储:数据库管理员定期地将整个数据库复制到磁盘、磁带或其他存储介质上保存起来的过程
要想恢复到故障发生时的状态,必须重新运行自转储以后的所有更新事务
-
静态转储:在系统中无运行事务时进行的转储操作(降低了数据库的可用性)
-
动态转储:转储操作与用户事务并发进行(不能保证副本中的数据正确有效)。需要把动态转储期间各事务对数据库的修改活动登记下来,建立日志文件
-
海量转储:每次转储全部数据库
-
增量转储:只转储上次转储后更新过的数据
日志文件:用来记录事务对数据库的更新操作的文件
以记录为单位的日志文件:
作用: 进行事务故障恢复;进行系统故障恢复;协助后备副本进行介质故障恢复。
原则:
- 登记的次序严格按并发事务执行的时间次序
- 必须先写日志文件,后写数据库
事故恢复的基本步骤:
- 反向扫描日志文件,查找该事务的更新操作
- 对该事务的更新操作执行逆操作。即将日志记录中“更新前的值”写入数据库
- 读到此事务的开始标志,事务故障恢复就完成了
系统故障的恢复:
- 正向扫描日志文件
- 重做队列
- 撤销队列
- Undo故障发生时未完成的事务:反向扫描日志文件,对每个撤销事务的更新操作执行逆操作
- Redo已完成的事务:正向扫描日志我文件,对每个重做事务重新执行登记的操作(即将“更新后的值”写入是数据库)
介质故障的恢复(需要数据库管理员的介入)
- 重装数据库
- 装入有关的日志文件副本,重做已完成的事务
10.4掌握并能熟练使用具有检查点的恢复技术。
提高恢复效率
- 在日志文件中增加检查点记录
- 增加重新开始文件
- 恢复子系统在登录日志文件期间动态地维护日志
检查点记录:建立检查点时刻所有正在执行的事务清单;这些事务最近一个日志记录的地址
重新开始文件:记录各个检查点记录在日志文件中的地址
动态维护日志文件的方法
周期性的执行:建立检查点,保存数据库状态
利用检查点的恢复步骤:
- 从重新开始文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录
- 由该检查点记录得到检出点建立时刻所有正在执行的事务清单
- 从检查点开始正向扫描日志文件,直到日志文件结束
- 撤销检查点后未完成事务(包括检查点前,事务开始后的修改);重做检查点后已完成事务(只重做检查点后的)
第十一章 并发控制
11.1并发控制及并发操作带来的数据不一致性
由于并发操作破坏了事务的隔离性
- 丢失修改
- 不可重复读
- 读"脏"数据
11.2封锁技术及基本封锁类型(排他锁和共享锁)、三级封锁协议
封锁:事务T在对某个数据对象操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象
排他锁/写锁:若事务T对数据对象A加上X锁,则其他事务在T释放A上的锁之前不能再读取和修改A
共享锁/读锁:若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的锁(大家都可以读)
三级封锁协议
一级:在事务T修改数据R之前必须先对其加X锁,直到事务结束才释放(只读不锁,还存在2、3问题)
二级:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁(还存在2问题)
三级:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放
11.3活锁和死锁,死锁的预防、诊断与解除
活锁:某事务T永远等待
避免方法:采用先来先服务
死锁:你等我,我等你,几个事务永远不能结束
预防:
-
一次封锁法
要求每个事务必须一次将所有要使用的数据全部加锁,否则不能继续执行
问题:过早加锁,降低系统并发度;难于事先精确确定封锁对象
-
顺序封锁法
预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁
问题:维护成本高;难于实现
诊断与解除:由DBMS的并发控制子系统定期检测系统中是否存在死锁,一旦检测到,就要设法解除
诊断:
-
超时法
如果一个事务的等待时间超过了规定的时限,就认为发生了死锁
-
等待图法
用事务等待图G=(T,U)动态反映所有事务的等待情况(生成回路,则表示系统中出现了死锁)
解除:选择一个处理死锁代价最小的事务,将其撤销,释放此事务持有的所有的锁,使其他事务能继续运行下去
11.4可串行化调度及两段锁协议,判断一个并发调度是不是冲突可串行化调度。
可串行化调度:多个事务的并发执行是正确的,并且仅当其结果与按某一次序串行地执行这些事务时的结果相同
冲突操作:读写、写写
冲突可串行化调度:一个调度Sc在保证冲突操作的次序不变的情况下,通过交换两个事务不冲突操作的次序得到另一个调度Sc’,如果Sc’是串行的,称调度Sc是冲突可串行化的调度
两段锁协议:指所有事务必须分两个阶段对数据项加锁和解锁(是可串行化调度的充分条件)
- 在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁
- 在释放一个封锁之后,事务不再申请和获得任何其他封锁
遵守三级封锁协议(在不同程度上保证数据一致性)必然遵守两段锁协议(保证并发调度的正确性)
11.5理解封锁粒度及多粒度封锁。
封锁粒度:封锁对象的大小
封锁粒度越小,并发度越高,系统开销越大
多粒度封锁:在一个系统中同时支持多种封锁粒度供不同的事务选择
对某个数据对象加锁,系统要检查:
- 该数据对象
- 所有上级结点
- 所有下级结点
意向锁:对任一结点加基本锁,必须先对它的上层结点加意向锁
无需逐个检查下一级结点的显示封锁,提高了对某个数据对象加锁时系统的检查效率
- 意向共享锁 \ IS锁
- 意向排他锁 \ IX锁
- 共享意向排他锁 \ SIX锁
锁的强度:
11.6能熟练使用并发控制进行事务调度
注:标“*”号章节不考,第8章需要复习8.1到8.3