《关系数据库基础.pptx》由会员分享,可在线阅读,更多相关《关系数据库基础.pptx(108页珍藏版)》请在课桌文档上搜索。
1、高级数据库技术 第2讲 关系数据库基础,关系数据库基于关系数据模型 提出和诞生于20世纪70年代 成熟和发展于20世纪80-90年代 进入21世纪,与计算机网络密切结合,焕发新生命活力 建立在关系数学理论之上,技术意义下的数据管理及使 用等具有较高的抽象层次和科学属性,第2讲 关系数据库基础,第2讲 关系数据库基础,第2讲 关系数据库基础,2.1 关系数据模型2.2 关系数据语言SQL2.3 关系模式设计2.5 关系数据事务管理,数据模型:数据结构和数据操作的抽象 数据管理的出发点 数据库原理和技术的基础,2.1 数据模型与数据模式,数据模型发展线条:数据管理技术的演进轨迹关系数据模型:静态数
2、据结构 动态数据操作 语义限制的数据完整性约束关系数据模式:关系模型在一个应用环境中的具体实现,2.1 数据模型与数据模式,2.1.1数据结构 关系数据结构:本质上是一种数学结构 域上笛卡尔乘积的一个子集离散数学中这样子集称为域上一个关系“关系”数据模型中“关系”一词由来域是一组具有相同数据类型的值的集合 例如:整数域、实数域、长度指定的字符串集合、枚举集合male,female和介于某个取值范围的整数等。,2.1 数据模型与数据模式,一组域D1,D2,Dn,其上笛卡尔乘积为集合 D1D2Dn(d1,dn)diDi,i1,n 笛卡尔乘积:表示为一个二维表 表中每一行:对应一个元素(向量)表中每
3、一列:对应一个域,2.1.1 关系数据结构,做为集合,笛卡尔乘积中元素称为元组(Tuple)通常记为t,关系R是元组t的一个集合关系R中元组以行形式出现,从形式上看关系R就相当于一张二维表(table)一个关系也称为一张关系表R 每一行对应一个元组(向量)每一列对应一个属性(域),2.1.1 关系数据结构,关系R需要满足 R D1D2Dn 关系R的最基本语法要求 数据不能没有语义 数据使用和管理的要点是数据的语义 对满足语法要求的关系R应进行相应语义描述 即还需考虑下述问题:,2.1.1 关系数据结构,一.基本语义限制进行如下规范化了的数学“关系”才能是关系模型的数据结构:规范化二维平面关系表
4、 有限性:关系是其元组的有限集合 原子性:关系中的每个列具有不可再分性质 属性列无序性:关系中列不考虑相互顺序,为此,需要 为每个列给出名称,及属性名。,2.1.1 关系数据结构,二.数据关联描述数据关联:同一关系内数据关联和不同关系数据关联。(1)同一关系内数据关联同一关系中各个属性关联通过主键机制实现 能够唯一标识元组的一组属性称为“超键”最小的超键称为“候选键”确定使用的候选键称为主键(关系可有多个候选键),2.1.1 关系数据结构,(2)不同关系间数据关联 不同关系间数据关联通过外键机制实现 设有关系R和S,R中一组属性A若不是R主键,却是S主键则A为R(关于S)的外键。外键的意义:将
5、关系间关联也作为一种“关系”进行描述 统一和简化了关系数据的技术处理,2.1.1 关系数据结构,数据语义描述与处理是数据管理的基本课题:通过“规范化”二维表对关系进行基本语义限定 通过“主键”和“外键”对关系进行语义关联描述但这仅是数据语义的基本要求:只能保证关系数据能够进行计算机管理(合法性)难以保证计算机管理数据的正确性和有效性(合适性),2.1.3 关系数据完整性约束,从应用和技术实现角度还需要对相应数据实体集的范围外延和数据间关系加以约束,这就是 关系数据完整性约束机制关系数据完整性约束机制包括三个组成部分 实体完整性约束 参照完整性约束 用户完整性约束,2.1.3 关系数据完整性约束
6、,实体完整性约束 数据标识是数据语义处理的前提,否则,计算机处理和实际应用过程中将难以进行语义和技术上的识别,需要限定关系数据中元组标识不能为空实体完整性约束:关系主键不能取空值,2.1.3 关系数据完整性约束,参照完整性约束 描述和处理数据语义关联,实现高效数据处理的技术途径,例如通过数据间“引用”可减少存储空间和实现快速查找 参照完整性约束:当属性集A是关系R关于关系S的外键时 A或取空值,或取S中某个元组的主键值。,2.1.2 关系数据完整性约束,用户完整性约束 数据语义与数据所处语境有密切关联,实际用户的应用环境是最重要的数据语境之一。用户完整性约束 用户在应用环境中自行定义的语义约束
7、 实体完整性和参照完整性通常由DBMS实现 用户完整性约束与各样应用背景关联,系统难以统一处理,呈现出复杂多样的特点。,2.1.3 关系数据完整性约束,数据模型 数据管理过程中数据结构、数据操作和完整性约束的抽象 数据模式在给定数据模型框架内对具体应用数据的描述。数据模型:像是一种给定的程序设计语言 数据模式:使用该语言对一个实际问题的具体实现程序应用关系数据模型建立具体数据库就是关系数据数据模式,2.1.4 关系数据模式,美国国家标准协会(ANSI)就将数据模式分为三种级别 内模式(物理模式)概念模式(模式 逻辑模式)外模式(用户模式),2.1.4 关系数据模式,数据库系统三级模式结构意义将
8、一个应用单位所涉及数据的具体组织交由DBMS完成使用户不必具体处理数据在计算机中的表示和存储方式专心在较高的抽象层面上对数据进行有效管理上述三个数据模式可以通过下述两级映射进行相互转换 外模式/概念模式映射 概念模式/内模式映射,2.1.4 关系数据模式,三级模式结构:使得数据在计算机内表述与组织对用户透明 两级映射:提供数据的逻辑独立性与物理独立性 三级模式/两级映射:现今数据模式基本架构 数据库的三级模式/两级映射的体系结构。,2.1.4 关系数据模式,第2讲 关系数据库基础,2.1 关系数据模型2.2 关系数据语言SQL2.3 关系模式设计2.4 关系数据库保护2.5 关系数据事务管理,
9、2.2.1 SQL基本功能,SQL中关系定义就是模式定义,包括 定义数据库模式(数据库)定义关系模式(基本表和视图)此时“定义”实际包括“创建”(CREATE)“撤销”(DROP)“修改”(ALTER),2.2.2 关系定义,SQL数据操作主要分为数据查询和数据更新两种情形数据查询的基本操作是投影、选择和连接。数据更新的基本操作是插入、删除和修改。SQL数据查询功能可看做一种基于关系运算的操作形式。在关系代数当中,许多查询的逻辑实现都可被描述为“选择之后再投影”的常见运算,即可用下面基本表达式表示:a1,ar2,an F(R1 R2 R3 Rn),2.2.2 关系定义,这个表达式中有三组基本参
10、数。查询的目标属性:a1,a2,an。查询所涉及的关系:R1,R2,R3,Rn。查询的逻辑条件:F。在SQL中,上述基本表达式可以被抽象为一个映射块,这个映射块构成SQL查询的基本语句,而上述三组参数实现使用三个子句分别表示。这三个子句是SELECT子句、FROM子句和WHERE子句。,2.2.2 关系定义,SELECT子句:表示查询结果中所需的目标属性,可看作做应于关系代数中投影运算。FROM子句:表示查询所涉及的一个或多个关系,在多个关系情形,可看做对应于关系代数中的连接运算。WHERE子句:表示作用于FROM子句所列关系中相关属性上的逻辑条件,可看做对应于关系代数中的选择运算。,2.2.
11、2 关系定义,由上述三个子句组成的映像语句的一般格式为:SELECTALL|DISTINCT,FROM,WHEREGROUP BY HAVINGORDER BYASC|DESC,2.2.2 关系定义,上述整个映像语句的运算含义描述如下:首先,根据WHERE子句中的条件表达式进行选择;其次,由FROM子句指定的基本表或视图中检索满足条件的元组;最后,按照SELECT子句中的目标属性表达式,选出元组中的属性值形成结果关系表。,设需要定义一个“学生-课程数据库”S-C:学生关系表:S(Sno,Sname,Ssex,Sage,Sdept)课程关系表:C(Cno,Cname,Cpno,Ccredit)学
12、生课程关系表:SC(Sno,Cno,Grade)例1 创建一个学生-课程数据库S-CCREATE SCHEMA“S-C”AUTHORIZATION John;,2.2.2 关系定义,例2 建立一个“学生选课”基本表SCCREATE TABLE SC(Sno CHAR(9),Cno CHAR(4),Grade SMALLINT,PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sno)REFERENCES S(Sno),FOREIGN KEY(Cno)REFERENCES C(Cno);,2.2.2 关系定义,例3 建立计算机科学系的学生视图。CREATE VIEW CS_S A
13、S SELECT Sno,Sname,Sage FROM Student WHERE Sdept=IS;,2.2.2 关系定义,关系数据查询分为 基于单表查询 基于连接的多表查询 基于嵌套的多表查询 基于嵌套查询:不相关子查询 相关子查询,2.2.3 数据查询,例4 基于连接多表查询:查询每个学生及其选修课程的情况 SELECT Student.*,SC.*FROM Student,SC WHERE Student.Sno=SC.Sno;,2.2.3 数据查询,例5 基于嵌套的多表查询:查询选修了课程名为“DB”的学生学号和姓名 SELECT Sno,Sname/最后在Student关系中取出
14、Sno 和Sname FROM Student WHERE Sno IN(SELECT Sno/然后在SC关系中找出选修了3号课程的学 生学号 FROM SC WHERE Cno IN(SELECT Cno/首先在C中找出“DB”的课程号3号 FROM C WHERE Cname=DB);,2.2.3 数据查询,例6 设有如下嵌套查询 SELECT Sname FROM Student WHERE EXISTS(SELECT*FROM SC WHERE Sno=Student.Sno AND Cno=1);则可以转换为如下连接查询:SELECT SnameFROM Student,SCWHER
15、E Student.Sno=SC.Sno AND SC.Cno=1;,2.2.3 数据查询,SQL有插入元组和插入子查询结果两种方式例7 对每一个系,求学生平均年龄首先,定义相应关系表Dept_age:CREATE TABLE Dept_age(Sdept CHAR(15)/*系名*/Avg_age SMALLINT);/*学生平均年龄*/向Dept_age插入数据 INSERT INTO Dept_age(Sdept,Avg_age)SELECT Sdept,AVG(Sage)FROM Student GROUP BY Sdept;,2.2.3 数据更新,2.数据删除例8 删除CS中所有学生
16、的选课记录。DELETE FROM SC WHERE CS=(SELETE Sdept FROM Student WHERE Student.Sno=SC.Sno);,2.2.3 数据更新,3.数据修改例9 将计算机科学系全体学生的成绩置零。UPDATE SC SET Grade=0 WHERE CS=(SELETE Sdept FROM Student WHERE Student.Sno=SC.Sno);,2.2.3 数据更新,第2讲 关系数据库基础,2.1 关系数据模型2.2 关系数据语言SQL2.3 关系模式设计2.4 关系数据库保护2.5 关系数据事务管理,关系数据模式设计=关系数据库
17、逻辑设计 针对具体问题构造一个相应数据模式构造原理:关系数据库规范化理论 实际应用问题中需要将客观实体各种特征抽象为属性 然后将这些属性构成相应关系模式实际中抽象出来的多个属性不能简单凑成若干个关系模式“有关联”和“没关联”属性不可组成同一个关系表“强关联”和“弱关联”属性不可组成同一个关系表 否则会产生数据冗余 数据冗余会引发数据异常,2.3 关系模式设计,为了避免由于数据冗余带来的数据不一致只能将有关联的属性子集 以及有较强关联的属性子集放在一起构成相应关系模式 需要研究:如何刻画属性子集之间的语义关联?如何得到属性子集之间的语义关联?,2.3.1 函数依赖,描述属性间语义关联就是研究各类
18、数据依赖数据依赖:关系模式内部属性间约束关系 反映数据内在性质 是数据语义的实际体现。主要数据依赖 函数依赖(Functional Dependency,FD)多值依赖(Multivalued Dependency,MVD)连接依赖(Joined Dependency,JD),2.3 关系模式设计,函数依赖:最基本的数据依赖 设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”记作XY。其中X称为决定因素属性组,Y称为依赖因素属性组,2.3.1 函数依
19、赖,平凡函数依赖 部分函数依赖-“弱”语义关联数据依赖传递函数依赖/非平凡函数依赖完全函数依赖-“强”语义关联数据依赖直接函数依赖/,2.3.1 函数依赖,关系模式设计基本要求:不能将无数据语义关联的属性做成一个关系模式 不能将弱数据语义关联的属性做成一个关系模式基本前提 确定给定属性集合上所有属性子集之间的函数依赖关联,2.3.1 函数依赖,怎样得到所有函数依赖之集:给定属性集合上已知函数依赖集为F 通过基于函数依赖语义推理“逻辑蕴含”得到F的包F+,2.3.1 函数依赖,(1)基本公理与推理规则1)基本公理Armstrong公理系统3条基本公理 A1(自反律,reflexivity)如果Y
20、 是X子集,则XY。A2(增广律,augmentation)如果XY在R(U)上成立,且ZU,则 XZYZ A3(传递律,transitivity)如果XY和YZ成立,则 XZ。,2.3.1 Armstrong公理系统,2)推理规则由基本公理A1、A2和A3为基础,可得下面五条推理规则 A4(合并性规则 union)XY,XZ XYZ。A5(分解性规则 decomposition):XY,ZY XZ。A6(拟传递性规则 pseudotransivity)XY,WYZWXZ。A7(复合性规则 composition rule)XY,WZWXYZ。A8(通用一致性规则 general unific
21、ation rule):XY,WZX(W-Y)YZ。,2.3.1 Armstrong公理系统,范式 符合某一种级别的关系模式的集合 关系数据库中的关系必须满足一定的要求 满足不同程度要求的为不同范式 关系模式R为第n范式,可简记为RnNF 一个低一级范式的关系模式通过模式分解可以转换为若干个高一级范式的关系模式 的集合过程叫规范化,2.3.3 关系模式范式,(1)第一范式如果一个关系模式R所有属性都是不可分的基本数据项 则R1NF。第一范式是对关系模式最基本要求 不满足第一范式数据库模式不能称为关系数据库对于不满足1NF的关系模式,需将不满足要求的属性“分解”为满足原子性的多个属性,2.3.3
22、 关系模式范式,(2)第2范式 若R1NF,且每一个非主属性完全函数依赖于键,则称R满足第2方式,记为R2NF(3)第3范式 关系模式R中若不存在这样的键X、属性组Y 及非主属性 Z(Z Y),使得XY,YZ成立,则称R满足第3范式 记为R 3NFN若R3NF必有R2NF 若R3NF,则每一个非主属性既不部分依赖于键也不传递依赖于键。,2.3.3 关系模式范式,(4)BC范式 关系模式1NF,若XY且Y X时X必含有键,则称R满足BCNF,并记为R BCNF。RBCNF等价于每一个决定因素属性组都包含主键。当若RBCNF时,所有非主属性对键都是完全函数依赖;所有主属性对每一个不包含它的键也是完
23、全函数依赖;没有任何属性完全函数依赖于非键的任何一组属性。R BCNF必有R 3NF。,2.3.3 关系模式范式,多值依赖和连接依赖是更为一般的数据依赖联系。1.多值依赖与4NF函数依赖实质上反映的是“多对一”联系在实际应用中还会有“一对多”数据联系诸如此类不同于函数依赖的数据联系也会产生数据冗余,从而引发各种数据异常,2.3.4 多值依赖和连接依赖,(1)多值依赖设有关系模式R(U),X、Y是属性集U中两个子集,而r是R(U)中任意给定一个关系实例。如果下述条件成立,则称Y多值依赖于X,记为XY。对于r在X上的一个确定的值(元组),都有r在Y中一组值与之对应 Y的这组对应值与r在Z=U-X-
24、Y中的属性值无关如果XY,但Z=U-X-Y,则称其为非平凡多值依赖,否则称为平凡多值依赖。平凡多值依赖常见情形是U=XY,此时Z=。,2.3.4 多值依赖和连接依赖,(2)第4范式4NF 对于R(U)中的任意两个属性子集X和Y,如果对于任意非平凡多值依赖XY,X都为超键,则称R(U)满足第4范式,记为R(U)4NF。由于R(U)上的函数依赖XY可看做多值依赖XY,如果R(U)属于第4范式,此时X就是超键,所以 XY满足BCNF,即4NF中所有的函数依赖都满足BCNF。,2.3.4 多值依赖和连接依赖,2.3.4 多值依赖和连接依赖,第2讲 关系数据库基础,2.1 关系数据模型2.2 关系数据语
25、言SQL2.3 关系模式设计2.4 关系数据库保护2.5 关系数据事务管理,关系数据库保护是指数据库完整性保护和安全性保护 数据库完整性保护:防范目标:数据库中不符合语义即不正确的数据 防范对象:合法用户的非法操作 数据库安全性保护:防范目标:保护数据库防止恶意破坏和非法存取 防范对象:非法用户的非法操作,2.4 关系数据库保护,数据库完整性:逻辑描述上:数据正确性和相容性 技术实现上:指数据 实体完整性、参照完整性、用户完整性(1)实体完整性在CREATE TABLE 由 PRIMARY KEY 定义 如主键由单属性构成,可将其定义为列级约束条件 如主键由多属性构成,需将其定义为表级约束条件
26、,2.4.1 完整性保护,(2)参照完整性保护关系模式参照完整性在CREATE TABLE中 用FOREIGN KEY 定义哪些列为外键 用REFERENCES 指明这些外键参照哪些表的主键。例如,关系SC一元组表示一学生选修的某门课程的成绩(Sno,Cno)是主键Sno,Cno分别参照引用Student主键和Course主键,2.4.1 完整性保护,出现破坏参照完整性情形时 DBMS会进行相应处理,2.4.1 完整性保护,违反参照完整性三种处理方式:拒绝(NO ACTION):系统默认策略;级联(CASCADE)设置为空值(SET-NULL)对于参照完整性,除定义外键外还应定义外键列是否允许
27、空值,2.4.1 完整性保护,(3)用户定义完整性保护用户定义完整性约束在SQL中分为两种类型:直接使用:创建关系表时定义用户约束 属性级约束 元组级约束 间接调用:独立定义用户完整性约束 断言约束 域约束,2.4.1 完整性保护,间接调用:独立定义用户完整性约束 断言(Asseertion)完整性约束涉及多个关系或聚合时可使用SQL“断言”约束 创建:CREATE ASSERTIONCHECK()与SELECT语句中WHERE子句条件关系达式相同,2.4.1 完整性保护,撤销:DROP ASSERTION撤销断言句法不提供RESTRICT和CHECK()例10 关系T,S,C,SC中使用断言
28、写出完整性约束。每位教师开设的课程不超过10门CREATE ASSERTION ASSE1 CHECK(10=ALL(SELECT COUNT(C#)FROM C GROUP BY T#));,2.4.1 完整性保护,域(Domain)约束SQL支持域的使用,可创建一个域并在其上定义相应约束域约束作用于所有属于指定域的属性列 创建:CREATE DOMAIN CHECK域约束语句可使用CHECK子句。为便于引用,约束可以命名。约束命名使用保留字CONSTRAINT。,2.4.1 完整性保护,CREATE DOMAIN Grades CHAR(1)DEFULT?CONSTRAINT VALID-
29、GradesCHECK(VALUE IN(A,B,C,D,E,?)上述定义一个新的域Grades并加一个名为“VALID-Grades”域约束CHECK子句指明定义在该域列上取值,缺省值为“?”,2.4.1 完整性保护,如对SC(S#,C#,G)中G用域Grades定义:CREATE TABLE SC(S#NUMERIC(6),C#CHAR(6),G Grades,);对SC进行插入操作时,每插入一条学生成绩记录,其成绩G须为CHECK子句指明值,缺省时为“?”否则为非法成绩值,系统将会产生一个含有约束名为“VALID-Grades”的诊断信息,以关系明当前操作不满足该域约束,2.4.1 完整
30、性保护,数据库安全性涉及技术安全、管理安全和政策安全 数据库学科主要讨论技术安全 操作系统安全、网络安全 数据库自身安全技术。数据库安全技术:数据库自身安全技术 数据库自身安全技术:数据库安全性控制、视图和审计 其中 安全性控制是数据库安全性保护主要技术支撑,2.4.2 安全性保护,(1)基于存取控制的安全性技术数据库安全性控制:自主存取控制和强制存取控制 自主存取控制(DAC):用户对于不同数据库对象具有不同存取权限 不同用户对同一数据库对象具有不同存取权限 只有具有相应权限的用户才能存取相应的数据库对象,2.4.2 安全性保护,用户权限:数据库对象 操作类型 数据库对象:数据库、基本表、视
31、图和索引等 数据库操作:创建、更新、查询等 RDBMS 支持自主存取控制 SQL通过GRANT和REVOKE语句实现自主存取控制,2.4.2 安全性保护,强制存取控制(MAC):每个数据库对象都分配一个“密级”每个用户也被授予一个级别对于每个数据库对象,根据其密级,具有相应合法许可证级别的用户才能存取相比自主存取控制,强制存取控制安全性检查更为严格实际应用中,在实现MAC之前先实现DAC,由两者共同构成数据库的安全性保护,2.4.2 安全性保护,(2)基于视图的安全性保护 为不同用户创建不同视图 通过将数据对象限制在一定范围 把需要保密的数据对无权存取的用户屏蔽起来 自动为数据提供一定程度的安
32、全性保护例11 建立计算机系学生的视图,把对该视图的SELECT权限授于王平,把该视图上的所有操作权限授于张明,2.4.2 安全性保护,先建立计算机系学生的视图CS_StudentCREATE VIEW CS_Student AS SELECT*FROM Student WHERE Sdept=CS;,2.4.2 安全性保护,(3)基于审计的安全性保护基于存取控制和视图安全性机制可看作是“事先预防”任何安全性措施都会有缺陷,都有可能被攻破审计(audit):将用户对于数据库对象所有操作都通过审计日志予以记录然后通过审计跟踪性心重现导致数据库安全性破坏的一系列事件从而发现非法存取的人、事件和内容
33、等,2.4.2 安全性保护,第2讲 关系数据库基础,2.1 关系数据模型2.2 关系数据语言SQL2.3 关系模式设计2.4 关系数据库保护2.5 关系数据事务管理,完成业务工作常常会涉及到多个数据操作组成的序列只有序列中每个操作都完成才能实现一项业务工作这些可单个执行的操作有内在关联它们组成的操作序列需看做一个不可分割的工作单元这种工作单元就是数据库中的事务,2.5 关系数据事务管理,事务(transaction):满足下述性质的数据操作序列:工作执行的原子性(Atomic)序列中数据操作“要么全做,要么全不做”,不能存在部分完成情况 更新操作的一致性(consistency)执行数据更新过
34、程中保证数据前后一致性,能够从一种一致性状态转换到另一种一致性状态,2.5 关系数据事务管理,并发执行的隔离性(Isolation)如果多个操作序列同时执行,最终效果需与单个操作序列独立执行相同 成功结果的持久性(Durability)当操作序列成功执行后相应数据结果于数据库影响持久,即便是当数据库发生故障遭到破坏时也能恢复原先结果,2.5 关系数据事务管理,数据库基本目标是对实现对数据的统一管理和用户共享实现用户共享数据技术途径:多项数据库操作并发执行进行统一管理数据重要任务:数据库故障恢复,2.5 关系数据事务管理,数据库共享:多用户同时使用数据库中同一数据即数据库多事务并发执行多事务并发
35、执行三种实现方式 事务串行执行 每时刻只有一个事务运行其它事务须等该事务结束方能运行缺点:不能充分利用系统资源,发挥数据库共享资源特征,2.5.1 并发控制,交叉并发方式(Interleaved Concurrency)单处理机系统 并行事务操作轮流交叉运行,事务没真正并行运行,但能减少处理机的空闲时间,提高系统效率 同时并发方式(simultaneous concurrency)多处理机系统 每个处理机可运行一个事务,多个处理机可以同时运行多个事务,真正实现多事务并行运行。,2.5.1 并发控制,多事务并发执行研究课题 如果不进行并发控制,会出现哪些问题,又如何解决?并发调度有多种方式,如何
36、判定那种方式“合适”?并发执行的复杂性,在上述两个问题之外,还会产生什么问题,又如何解决?,2.5.1 并发控制,1.并发控制基本技术(1)并发控制必要性并发执行需加以控制或调度,否则会出现下述问题。丢失修改 不可重复读事务T1读取数据后事务T2执行更新操作使T1无法再现前一次读取结果,2.5.1 并发控制,读“脏”数据事务T1修改某一数据,并将其写回磁盘事务T2读取同一数据后,T1由于某种原因被撤销这时T1已修改过的数据恢复原值,T2读到的数据就与数 据库中的数据不一致T2读到的数据就为“脏”数据,即不正确的数据,2.5.1 并发控制,(2)封锁技术并发控制技术:事务的封锁技术。封锁是系统对
37、事务并发执行的一种调度和控制保证系统对数据项的访问以互斥方式进行封锁基本点:对数据对象操作实行某种专有控制在一段时间内,防止其它事务访问指定资源禁止对数据J进行操作保证并发执行事务间相互隔离互不干扰,2.5.1 并发控制,事务T 需对数据D 进行操作(读/写)时,须向系统提出申请,对D 加以封锁 加锁成功后,即具有对数据D一定操作与控制权限 此时,其它事务不能对加锁的数据D随意操作 事务T 操作完成之后即释放锁 此后数据即可为其它事务操作服务基于封锁技术的事务进程如图,2.5.1 并发控制,2.5.1 并发控制,表级封锁两种形式排它锁(eXclusive locks):事务T 对数据对象D 加
38、X锁后,T 可对D进行读写其它事务只有等到T 解除X锁后,才能对D进行封锁和操作排它锁实质:保证事务对数据的独占性排除其它事务对它执行过程的干扰,2.5.1 并发控制,由于只容许一个事务独自封锁数据,其它申请封锁的事务只能排队等待,所以采用X锁时并发程度较低共享锁(Sharing Locks):事务T 对数据D 加S锁之后,T 可读D 但不能写D 其它事务可对D加S锁但不能加X锁共享锁实质:保证多个事务可以同时读A 但在施加共享封锁的事务T释放D上的S锁之前 其它各个事务(包括T本身)都不能写D,2.5.1 并发控制,2.5.1 并发控制,(3)三级封锁协议对数据封锁时需约定一些规则,如何时申
39、请封锁、持锁时间和什么时间释放封锁等,这就是所谓封锁协议 一级封锁协议:事务T对数据D进行写操作前,须对D加X锁保持加锁状态直到事务结束才可释放加在D上的X锁一级封锁协议可以防止“修改丢失”,2.5.1 并发控制,二级封锁协议事务T 在读取数据D前须先对D 加S锁读完之后即刻释放加在D上的S锁。此封锁方式与一级封锁协议一起构成二级封锁协议事务对数据D做写操作时使用X锁,防止了丢失数据做读操作时使用S锁,防止了读脏数据,2.5.1 并发控制,三级封锁协议事务T在对数据D读之前须对D加S锁,直到事务结束才释放D上S锁。此方式与一级封锁协议一起构成三级封锁协议由于包含一级封锁协议,防止了丢失修改;由
40、于包含二级封锁协议,防止了读脏数据;由于在对数据D做“写”操作时加X锁封锁,做“读”操作时加S锁封锁,这两种锁都直到事务结束后才释放,防止不可重复读。,2.5.1 并发控制,2.并发控制的标准(1)可串行化调度多事务并发执行基于各事务中操作“交错”执行每一种交错方式称为并发执行一种调度方式并发执行的调度方式非常之多DBMS对并发事务不同的调度可能会产生不同的结果明确那种方式“正确”和那种方式“不正确”非常必要,2.5.1 并发控制,多个事务“顺序”即“串行”执行结果总是合理的以多事务串行执行作为并发调度正确性标准可串行化(Serializable)调度:多个事务并发执行正确 当且仅当其结果与按
41、某串行执行这些事务时结果相同,2.5.1 并发控制,(2)两段封锁协议 两段封锁协议(Two-Phase Locking,2PL):要求所有事务必须分两个阶段对数据项加锁和解锁 保证了由其产生的并发调度是可串行化的。在2PL中,事务的封锁分为两个阶段,2.5.1 并发控制,阶段1:获得封锁(扩展阶段)事务可以申请获得任何数据项上的任何类型的锁但不能释放任何锁。阶段2:释放封锁(收缩阶段)事务可以释放任何数据项上的任何类型的锁但不能再申请任何锁,2.5.1 并发控制,数据库故障恢复 把数据库从错误状态恢复到某一已知正确状态(一致状态或完整状态)1.数据库故障类型数据库故障:事务级故障、系统级故障
42、和介质级故障(1)事务级故障事务内部故障多是非预期,不能由应用程序处理如运算溢出、并发事务发生死锁而被选中撤销该事务和违反某些完整性限制等事务故障恢复策略:撤消事务(UNDO),2.5.2 故障恢复,(2)系统级故障(软故障)造成系统停止运转的任何事件,使得系统需要重新启动 如整个系统正常运行突然被破坏、所有正在运行事务都非正常终止等 特征:不破坏数据库但内存中数据库缓冲区的信息全部丢失。(3)介质级故障(硬故障)外存故障,如磁盘损坏、磁头碰撞、操作系统某种潜在错误和瞬时强磁场干扰等,2.5.2 故障恢复,2.故障恢复技术 就是冗余技术,即利用存储在系统其它地方冗余数据重建数据库中被破坏或不正
43、确部分数据 恢复机制涉及的关键问题:建立冗余数据方式 数据备份(backup)登录日志文件(logging)使用冗余数据策略 利用冗余数据实施数据库恢复,2.5.2 故障恢复,(1)数据备份与日志数据备份 DBA将整个数据库复制到磁带或另一磁盘的保存过程 备用数据称为后备或后援副本。数据库遭破坏后可将后备副本重新装入 重装后备副本只能将数据库恢复到转储时的状态日志文件 记录事务对数据库更新操作的文件,以记录为单位和以数据块为单位的两类日志文件,2.5.2 故障恢复,(2)基于备份和日志的故障恢复基于备份与日志的=数据库故障恢复原理如图所示。,2.5.2 故障恢复,系统在Ta时刻停止运行事务,进
44、行数据库转储在Tb时刻转储完毕,得到Tb时刻的数据库一致性副本系统运行到Tf时刻发生故障DBA重装后备副本,将数据库恢复至Tb时刻状态重新运行自TbTf时刻所有更新事务,恢复到故障发生前一致状态,2.5.2 故障恢复,事务级故障恢复 当事务在运行至正常终止点前被终止时,由恢复子系统应利用日志文件撤消(UNDO)此事务已对数据库进行的修改,事务故障恢复由系统自动完成,不需要用户干预,2.5.2 故障恢复,系统级故障恢复 造成数据库不一致状态原因是未完成事务对数据库更新已写入数据库已提交事务对数据库更新还留在缓冲区没来得及写入通过UNDO 故障发生时未完成的事务通过 REDO 已完成的事务系统故障恢复由系统重新启动时自动完成,不要用户干预,2.5.2 故障恢复,介质级故障恢复 需要DBA介入,重装最近转储的数据库副本有关的各日志文件副本执行系统提供的恢复命令具体的恢复操作仍由DBMS完成。,2.5.2 故障恢复,