商务网站建设实训报告/免费制作网站的软件
前言
今天刚结束考试,考的范围基本没有超过这套重点内容,觉得整理的这份资料还算比较有用,遂睡前整理了下分享给大家,希望能帮到要准备数据库期末又时间紧张的学弟学妹~
文章参考:
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.SnoAND SC.Cno=Course.Cno;
复合条件连接查询
SELECT Student.Sno,Sname
FROM Student,SC
WHERE Student.Sno=SC.Sno ANDSC.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 SdeptFROM StudentWHERE 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 StudentGROUP BY Sdept;
修改
UPDATE Student SET Sage=22 WHERE Sno='234345';UPDATE SC
SET Grade=0
WHERE Sno IN(SELECT SnoFROM StudentWHERE Sdept='CS');
删除
DELETE FROM Student WHERE Sno='23456';DELETE FROM Studen;DELETE
FROM SC
WHERE Sno IN(SELECT SnoFROM StudentWHERE 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 CASCADEON UPDATE CASCADE,
FOREIGN KEY(Cno) REFERENCES Course(Cno)ON DELETE NO ACTIONON 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
相关文章:

【数据库】HNU数据库系统期末考试复习重点
前言 今天刚结束考试,考的范围基本没有超过这套重点内容,觉得整理的这份资料还算比较有用,遂睡前整理了下分享给大家,希望能帮到要准备数据库期末又时间紧张的学弟学妹~ 文章参考: 1.课程老师发《数据库期末考试复习…...

SCI论文写作常见连词及适用情况
And:用于连接同类或相似的词、短语或句子,表达并列关系。Moreover:用于连接两个相似或相关的想法,表达附加的信息或思想。Furthermore:用于连接两个相似或相关的想法,表达更进一步的信息或思想。In additio…...

Spring中的数据校验--进阶
分组校验 场景描述 在实际开发中经常会遇到这种情况:添加用户时,id是由后端生成的,不需要校验id是否为空,但是修改用户时就需要校验id是否为空。如果在接收参数的User实体类的id属性上添加NotNull,显然无法实现。这时…...

多种方法解决谷歌(chrome)、edge、火狐等浏览器F12打不开调试页面或调试模式(面板)的问题。
文章目录1. 文章引言2. 解决问题3. 解决该问题的其他方法1. 文章引言 不论是前端开发者,还是后端开发者,我们在调试web项目时,偶尔弹出相关错误。 此时,我们需要打开浏览器的调试模式,如下图所示: 通过浏…...

默认生成的接口实现方法体的问题
随着集成开发环境越来越强大,编程开发工作也变得越来越高效,很多的代码都不需要逐字输入,可以利用代码生成和自动补全来辅助开发。但是这样的便利也可能引起一些疏忽,本文就Java开发中默认生成的接口实现方法来谈谈以前遇到的问题…...

【OJ】十级龙王间的决斗
📚Description: 在《驯龙高手2》,最精彩的高潮出现在两只阿尔法决斗的时候。 驯龙高手中的十星龙王又称喷冰龙,有且只有两只,是最大型的龙,所有其他龙都要膜拜它(当然,幼龙除外)&…...

java 自定义注解
文章目录前言Annotation包自定义注解自定义注解示例参考文章:java 自定义注解 用处_java注解和自定义注解的简单使用参考文章:java中自定义注解的作用和写法前言 在使用Spring Boot的时候,大量使用注解的语法去替代XML配置文件,十…...

产品经理知识体系:2.如何进行商业需求分析?
商业需求分析 思考 笔记 用户细分: 核心用户、用户分级 用户关系: 如何维护用户关系、维护等成本 关系和商业模式的整合 核心价值: 解决什么问题,满足什么需求,最终带给用户什么价值 渠道通道: 如何触达…...

EditPlus正则表达式替换字符串详解
正则表达式是一个查询的字符串,它包含一般的字符和一些特殊的字符,特殊字符可以扩展查找字符串的能力,正则表达式在查找和替换字符串的作用不可忽视,它能很好提高工作效率。EditPlus的查找,替换,文件中查找…...

Go基础-环境安装
文章目录1 Go?Golang?2 下载Go3 windows安装4 测试是否成功1 Go?Golang? Go也称为Golang,是Google开发的一个开源的编译型的静态语言。 Golang的主要关注点是高可用、高并发和高扩展性,Go语言定位是系统级编程语言,对web程序具有很好的支…...

《NFL橄榄球》:纽约巨人·橄榄1号位
纽约巨人(New York Giants)是美国全国橄榄球联盟在新泽西州东卢瑟福的一支球队。巨人是在1925年作为五个成员之一加入国家美式橄榄球联盟。 在2018年时,球队市值为33亿美元,在世界前50名球队中并列第8名,同时在NFL高居…...

2023/02/18 ES6数组的解读
1 扩展运算符 扩展运算符(spread)是三个点(…). 它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列. console.log(...[1, 2, 3]) // 1 2 3console.log(1, ...[2, 3, 4], 5) // 1 2 3 4 5该运算符主要用于…...

Ubuntu 20 安装包下载(清华镜像)
Ubuntu 20 安装包下载在国内推荐使用清华大学镜像 清华镜像地址:https://mirrors.tuna.tsinghua.edu.cn/ 在搜索框中输入Ubuntu,然后点击Ubuntu -release,这里面有近几年的Ubuntu镜像 点击你想下载的版本,我选择的是20.0413点击…...

华为OD机试 - 机器人走迷宫(JS)
机器人走迷宫 题目 房间有X*Y的方格组成,例如下图为6*4的大小。每一个放个以坐标(x,y)描述。 机器人固定从方格(0,0)出发,只能向东或者向北前进, 出口固定为房间的最东北角,如下图的方格(5,3)。 用例保证机器人可以从入口走到出…...

字节二面:10Wqps超高流量系统,如何设计?
超高流量系统设计思路 前言 在40岁老架构师 尼恩的**读者交流群(50)**中,大流量、高并发的面试题是一个非常、非常高频的交流话题。最近,有小伙伴面试字节时,遇到一个面试题: 10Wqps超高流量系统,该如何设计…...

基于springboot+html汽车维修系统汽车维修系统的设计与实现
基于springboothtml汽车维修系统汽车维修系统的设计与实现 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式…...

营销狂人杜国楹的两大顶级思维
“营销狂人”小罐茶 杜国楹两大顶级思维 1.一定要有【参照物思维】 2.一定要有【终局思维】 趣讲大白话:大牛的思考就是不同 *********** 杜国楹对茶行业思考 1.参照咖啡、酒的发展路径 2.中国茶工业化,品牌化是唯一壮大之路 3.龙头企业必须全品 没有参照物思维就没…...

面试题-前端开发JavaScript篇下(答案超详细)
文章目录 实现一个 once 函数,传入函数参数只执行一次将原生的 ajax 封装成 promisJS 监听对象属性的改变如何实现一个私有变量,用 getName 方法可以访问,不能直接访问==和===、以及 Object.is 的区别setTimeout、setInterval 和 requestAnimationFrame 之间的区别实现一个两…...

Android 9.0 修改Recovery字体图片的大小(正在清理)文字大小
1.概述 在9.0的系统产品定制化开发中,在系统中recovery功能也是非常重要的功能,所以说在进行recovery的时候,正在清理的 字体显示的有些小了,所以产品需求要求改大recovery的字体大小,所以这就需要在recovery页面看下字体大小的显示逻辑然后修改字体的显示大小,主要功能修…...

操作系统 五(文件系统)
一 文件定义:文件是指由创建者所定义的,具有文件名的一组相关元素的集合,可分为有结构文件和无结构文件两类。在有结构文件中,文件由若干个相关记录组成。而无结构文件则被看成一个字节流。文件在文件系统中是一个最大的数据单位&…...

华为OD机试 - 人数最多的站点(JS)
人数最多的站点 题目 公园园区提供小火车单向通行,从园区站点编号最小到最大, 通行如1~2~3~4~1万,然后供员工在各个办公园区穿梭, 通过对公司N个员工调研统计到每个员工的坐车区间,包含前后站点, 请设计一个程序计算出小火车在哪个园区站点时人数最多。 输入 输入的第…...

Mr. Cappuccino的第41杯咖啡——Kubernetes之Pod调度策略
Kubernetes之Pod调度策略Pod的4种调度策略定向调度nodeNamenodeSelector亲和性调度node亲和性硬限制软限制关系运算符pod亲和性pod反亲和性污点和容忍污点(taints)容忍(tolerations)默认情况下,Scheduler计算出一个Pod…...

Linux 磁盘挂载
目录 Linux硬盘分区 硬盘设备的文件名 /dev/sd[a-z] 硬盘分区 识别硬盘的文件名 Linux文件系统 文件系统类型 Linux如何保存文件 VFS虚拟文件系统 磁盘挂载命令 lsblk 查看系统的磁盘使用情况 fdisk 硬盘分区 mkfs 格式化文件系统 mount 挂载命令 df 显示磁盘空间…...

命名冲突问题与命名空间
一、何为命名空间? 首先我们运行下面代码, #include <stdio.h> int rand 0; int main() {printf("%d", rand);return 0; } 我们会发现该代码能够正常运行,没有任何问题。 但是当我们再在上面代码的基础上包含stdlib.h头…...

Kafka漏洞修复之CVE-2023-25194修复措施验证
Kafka漏洞修复之CVE-2023-25194修复措施验证前言风险分析解决方案AdoptOpenJDK Zookeeper Kafka多版本OpenJDK安装切换Zookeeper安装Kafka安装与使用其他Kafka消息发送流程Linux配置加载顺序参考链接前言 场景介绍 Kafka最近爆出高危漏洞CNNVD-202302-515,导致Apa…...

中后序遍历构建二叉树与应用I
目录 题目描述 思路分析 AC代码 题目描述 按中序遍历和后序遍历给出一棵二叉树,求这棵二叉树中叶子节点权值的最小值。 输入保证叶子节点的权值各不相同。 输入 测试数据有多组 对于每组测试数据,首先输入一个整数N (1 < N < 10000)&#x…...

随机退化模型--基础篇(1)
随机退化模型--基础篇(1) 1. 随机退化建模1.1 瞬间失效1.2 存在缓慢退化过程的失效2. 通俗解释2.1 包引入2.2 参数定义2.3 基于递归函数的更新2.4 结果可视化1. 随机退化建模 随机模型亦称“非确定的、概率的模型”,是按随机变量建立的模型。其特点是; 模型参数、模拟对象发…...

2023.2.15工作学习记录 git Docker compose容器编排
关于Git错误提交了target目录 是因为在ignore目录中没有加入biz这个工程 以后提交代码时一定要检查好自己提交的代码 首先把所有的全部取消 然后再根据自己要提交的内容一个个来勾选 Docker网络 container模式:新建的容器和已经存在的一个容器共享一个网络…...

基于jeecgboot的flowable流程增加节点自动跳过功能
为了满足有时候需要在某个节点没有人员处理的时候需要自动跳过,所以增加了这个功能。 一、FlowComment意见里增加一个类型8,跳过流程 /** * 流程意见类型 * */ public enum FlowComment { /** * 说明 */ NORMAL("1", "…...

流程引擎之Activiti简介
背景Activiti 是一个开源架构的工作流引擎,基于 bpmn2.0 标准进行流程定义,其前身是 jBPM,Activiti 相对于 jBPM 更轻量,更易上手,且天然集成了 Spring。2010年 jBPM 创始人 Tom Baeyens 离开 JBoss,随之加…...