关系数据库基础_第1页
关系数据库基础_第2页
关系数据库基础_第3页
关系数据库基础_第4页
关系数据库基础_第5页
已阅读5页,还剩103页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高级数据库技术第2讲关系数据库基础,关系数据库基于关系数据模型提出和诞生于20世纪70年代成熟和发展于20世纪80-90年代进入21世纪,与计算机网络密切结合,焕发新生命活力建立在关系数学理论之上,技术意义下的数据管理及使用等具有较高的抽象层次和科学属性,第2讲关系数据库基础,第2讲关系数据库基础,第2讲关系数据库基础,2.1关系数据模型2.2关系数据语言SQL2.3关系模式设计2.5关系数据事务管理,数据模型:数据结构和数据操作的抽象数据管理的出发点数据库原理和技术的基础,2.1数据模型与数据模式,数据模型发展线条:数据管理技术的演进轨迹关系数据模型:静态数据结构动态数据操作语义限制的数据完整性约束关系数据模式:关系模型在一个应用环境中的具体实现,2.1数据模型与数据模式,2.1.1数据结构关系数据结构:本质上是一种数学结构域上笛卡尔乘积的一个子集离散数学中这样子集称为域上一个关系“关系”数据模型中“关系”一词由来域是一组具有相同数据类型的值的集合例如:整数域、实数域、长度指定的字符串集合、枚举集合male,female和介于某个取值范围的整数等。,2.1数据模型与数据模式,一组域D1,D2,Dn,其上笛卡尔乘积为集合D1D2Dn(d1,dn)diDi,i1,n笛卡尔乘积:表示为一个二维表表中每一行:对应一个元素(向量)表中每一列:对应一个域,2.1.1关系数据结构,做为集合,笛卡尔乘积中元素称为元组(Tuple)通常记为t,关系R是元组t的一个集合关系R中元组以行形式出现,从形式上看关系R就相当于一张二维表(table)一个关系也称为一张关系表R每一行对应一个元组(向量)每一列对应一个属性(域),2.1.1关系数据结构,关系R需要满足RD1D2Dn关系R的最基本语法要求数据不能没有语义数据使用和管理的要点是数据的语义对满足语法要求的关系R应进行相应语义描述即还需考虑下述问题:,2.1.1关系数据结构,一.基本语义限制进行如下规范化了的数学“关系”才能是关系模型的数据结构:规范化二维平面关系表有限性:关系是其元组的有限集合原子性:关系中的每个列具有不可再分性质属性列无序性:关系中列不考虑相互顺序,为此,需要为每个列给出名称,及属性名。,2.1.1关系数据结构,二.数据关联描述数据关联:同一关系内数据关联和不同关系数据关联。(1)同一关系内数据关联同一关系中各个属性关联通过主键机制实现能够唯一标识元组的一组属性称为“超键”最小的超键称为“候选键”确定使用的候选键称为主键(关系可有多个候选键),2.1.1关系数据结构,(2)不同关系间数据关联不同关系间数据关联通过外键机制实现设有关系R和S,R中一组属性A若不是R主键,却是S主键则A为R(关于S)的外键。外键的意义:将关系间关联也作为一种“关系”进行描述统一和简化了关系数据的技术处理,2.1.1关系数据结构,数据语义描述与处理是数据管理的基本课题:通过“规范化”二维表对关系进行基本语义限定通过“主键”和“外键”对关系进行语义关联描述但这仅是数据语义的基本要求:只能保证关系数据能够进行计算机管理(合法性)难以保证计算机管理数据的正确性和有效性(合适性),2.1.3关系数据完整性约束,从应用和技术实现角度还需要对相应数据实体集的范围外延和数据间关系加以约束,这就是关系数据完整性约束机制关系数据完整性约束机制包括三个组成部分实体完整性约束参照完整性约束用户完整性约束,2.1.3关系数据完整性约束,实体完整性约束数据标识是数据语义处理的前提,否则,计算机处理和实际应用过程中将难以进行语义和技术上的识别,需要限定关系数据中元组标识不能为空实体完整性约束:关系主键不能取空值,2.1.3关系数据完整性约束,参照完整性约束描述和处理数据语义关联,实现高效数据处理的技术途径,例如通过数据间“引用”可减少存储空间和实现快速查找参照完整性约束:当属性集A是关系R关于关系S的外键时A或取空值,或取S中某个元组的主键值。,2.1.2关系数据完整性约束,用户完整性约束数据语义与数据所处语境有密切关联,实际用户的应用环境是最重要的数据语境之一。用户完整性约束用户在应用环境中自行定义的语义约束实体完整性和参照完整性通常由DBMS实现用户完整性约束与各样应用背景关联,系统难以统一处理,呈现出复杂多样的特点。,2.1.3关系数据完整性约束,数据模型数据管理过程中数据结构、数据操作和完整性约束的抽象数据模式在给定数据模型框架内对具体应用数据的描述。数据模型:像是一种给定的程序设计语言数据模式:使用该语言对一个实际问题的具体实现程序应用关系数据模型建立具体数据库就是关系数据数据模式,2.1.4关系数据模式,美国国家标准协会(ANSI)就将数据模式分为三种级别内模式(物理模式)概念模式(模式逻辑模式)外模式(用户模式),2.1.4关系数据模式,数据库系统三级模式结构意义将一个应用单位所涉及数据的具体组织交由DBMS完成使用户不必具体处理数据在计算机中的表示和存储方式专心在较高的抽象层面上对数据进行有效管理上述三个数据模式可以通过下述两级映射进行相互转换外模式/概念模式映射概念模式/内模式映射,2.1.4关系数据模式,三级模式结构:使得数据在计算机内表述与组织对用户透明两级映射:提供数据的逻辑独立性与物理独立性三级模式/两级映射:现今数据模式基本架构数据库的三级模式/两级映射的体系结构。,2.1.4关系数据模式,第2讲关系数据库基础,2.1关系数据模型2.2关系数据语言SQL2.3关系模式设计2.4关系数据库保护2.5关系数据事务管理,2.2.1SQL基本功能,SQL中关系定义就是模式定义,包括定义数据库模式(数据库)定义关系模式(基本表和视图)此时“定义”实际包括“创建”(CREATE)“撤销”(DROP)“修改”(ALTER),2.2.2关系定义,SQL数据操作主要分为数据查询和数据更新两种情形数据查询的基本操作是投影、选择和连接。数据更新的基本操作是插入、删除和修改。SQL数据查询功能可看做一种基于关系运算的操作形式。在关系代数当中,许多查询的逻辑实现都可被描述为“选择之后再投影”的常见运算,即可用下面基本表达式表示:a1,ar2,anF(R1R2R3Rn),2.2.2关系定义,这个表达式中有三组基本参数。查询的目标属性:a1,a2,an。查询所涉及的关系:R1,R2,R3,Rn。查询的逻辑条件:F。在SQL中,上述基本表达式可以被抽象为一个映射块,这个映射块构成SQL查询的基本语句,而上述三组参数实现使用三个子句分别表示。这三个子句是SELECT子句、FROM子句和WHERE子句。,2.2.2关系定义,SELECT子句:表示查询结果中所需的目标属性,可看作做应于关系代数中投影运算。FROM子句:表示查询所涉及的一个或多个关系,在多个关系情形,可看做对应于关系代数中的连接运算。WHERE子句:表示作用于FROM子句所列关系中相关属性上的逻辑条件,可看做对应于关系代数中的选择运算。,2.2.2关系定义,由上述三个子句组成的映像语句的一般格式为:SELECTALL|DISTINCT,FROM,WHEREGROUPBYHAVINGORDERBYASC|DESC,2.2.2关系定义,上述整个映像语句的运算含义描述如下:首先,根据WHERE子句中的条件表达式进行选择;其次,由FROM子句指定的基本表或视图中检索满足条件的元组;最后,按照SELECT子句中的目标属性表达式,选出元组中的属性值形成结果关系表。,设需要定义一个“学生-课程数据库”S-C:学生关系表:S(Sno,Sname,Ssex,Sage,Sdept)课程关系表:C(Cno,Cname,Cpno,Ccredit)学生课程关系表:SC(Sno,Cno,Grade)例1创建一个学生-课程数据库S-CCREATESCHEMA“S-C”AUTHORIZATIONJohn;,2.2.2关系定义,例2建立一个“学生选课”基本表SCCREATETABLESC(SnoCHAR(9),CnoCHAR(4),GradeSMALLINT,PRIMARYKEY(Sno,Cno),FOREIGNKEY(Sno)REFERENCESS(Sno),FOREIGNKEY(Cno)REFERENCESC(Cno);,2.2.2关系定义,例3建立计算机科学系的学生视图。CREATEVIEWCS_SASSELECTSno,Sname,SageFROMStudentWHERESdept=IS;,2.2.2关系定义,关系数据查询分为基于单表查询基于连接的多表查询基于嵌套的多表查询基于嵌套查询:不相关子查询相关子查询,2.2.3数据查询,例4基于连接多表查询:查询每个学生及其选修课程的情况SELECTStudent.*,SC.*FROMStudent,SCWHEREStudent.Sno=SC.Sno;,2.2.3数据查询,例5基于嵌套的多表查询:查询选修了课程名为“DB”的学生学号和姓名SELECTSno,Sname/最后在Student关系中取出Sno和SnameFROMStudentWHERESnoIN(SELECTSno/然后在SC关系中找出选修了3号课程的学生学号FROMSCWHERECnoIN(SELECTCno/首先在C中找出“DB”的课程号3号FROMCWHERECname=DB);,2.2.3数据查询,例6设有如下嵌套查询SELECTSnameFROMStudentWHEREEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno=1);则可以转换为如下连接查询:SELECTSnameFROMStudent,SCWHEREStudent.Sno=SC.SnoANDSC.Cno=1;,2.2.3数据查询,SQL有插入元组和插入子查询结果两种方式例7对每一个系,求学生平均年龄首先,定义相应关系表Dept_age:CREATETABLEDept_age(SdeptCHAR(15)/*系名*/Avg_ageSMALLINT);/*学生平均年龄*/向Dept_age插入数据INSERTINTODept_age(Sdept,Avg_age)SELECTSdept,AVG(Sage)FROMStudentGROUPBYSdept;,2.2.3数据更新,2.数据删除例8删除CS中所有学生的选课记录。DELETEFROMSCWHERECS=(SELETESdeptFROMStudentWHEREStudent.Sno=SC.Sno);,2.2.3数据更新,3.数据修改例9将计算机科学系全体学生的成绩置零。UPDATESCSETGrade=0WHERECS=(SELETESdeptFROMStudentWHEREStudent.Sno=SC.Sno);,2.2.3数据更新,第2讲关系数据库基础,2.1关系数据模型2.2关系数据语言SQL2.3关系模式设计2.4关系数据库保护2.5关系数据事务管理,关系数据模式设计=关系数据库逻辑设计针对具体问题构造一个相应数据模式构造原理:关系数据库规范化理论实际应用问题中需要将客观实体各种特征抽象为属性然后将这些属性构成相应关系模式实际中抽象出来的多个属性不能简单凑成若干个关系模式“有关联”和“没关联”属性不可组成同一个关系表“强关联”和“弱关联”属性不可组成同一个关系表否则会产生数据冗余数据冗余会引发数据异常,2.3关系模式设计,为了避免由于数据冗余带来的数据不一致只能将有关联的属性子集以及有较强关联的属性子集放在一起构成相应关系模式需要研究:如何刻画属性子集之间的语义关联?如何得到属性子集之间的语义关联?,2.3.1函数依赖,描述属性间语义关联就是研究各类数据依赖数据依赖:关系模式内部属性间约束关系反映数据内在性质是数据语义的实际体现。主要数据依赖函数依赖(FunctionalDependency,FD)多值依赖(MultivaluedDependency,MVD)连接依赖(JoinedDependency,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函数依赖,平凡函数依赖部分函数依赖-“弱”语义关联数据依赖传递函数依赖/非平凡函数依赖完全函数依赖-“强”语义关联数据依赖直接函数依赖/,2.3.1函数依赖,关系模式设计基本要求:不能将无数据语义关联的属性做成一个关系模式不能将弱数据语义关联的属性做成一个关系模式基本前提确定给定属性集合上所有属性子集之间的函数依赖关联,2.3.1函数依赖,怎样得到所有函数依赖之集:给定属性集合上已知函数依赖集为F通过基于函数依赖语义推理“逻辑蕴含”得到F的包F+,2.3.1函数依赖,(1)基本公理与推理规则1)基本公理Armstrong公理系统3条基本公理A1(自反律,reflexivity)如果Y是X子集,则XY。A2(增广律,augmentation)如果XY在R(U)上成立,且ZU,则XZYZA3(传递律,transitivity)如果XY和YZ成立,则XZ。,2.3.1Armstrong公理系统,2)推理规则由基本公理A1、A2和A3为基础,可得下面五条推理规则A4(合并性规则union)XY,XZXYZ。A5(分解性规则decomposition):XY,ZYXZ。A6(拟传递性规则pseudotransivity)XY,WYZWXZ。A7(复合性规则compositionrule)XY,WZWXYZ。A8(通用一致性规则generalunificationrule):XY,WZX(W-Y)YZ。,2.3.1Armstrong公理系统,范式符合某一种级别的关系模式的集合关系数据库中的关系必须满足一定的要求满足不同程度要求的为不同范式关系模式R为第n范式,可简记为RnNF一个低一级范式的关系模式通过模式分解可以转换为若干个高一级范式的关系模式的集合过程叫规范化,2.3.3关系模式范式,(1)第一范式如果一个关系模式R所有属性都是不可分的基本数据项则R1NF。第一范式是对关系模式最基本要求不满足第一范式数据库模式不能称为关系数据库对于不满足1NF的关系模式,需将不满足要求的属性“分解”为满足原子性的多个属性,2.3.3关系模式范式,(2)第2范式若R1NF,且每一个非主属性完全函数依赖于键,则称R满足第2方式,记为R2NF(3)第3范式关系模式R中若不存在这样的键X、属性组Y及非主属性Z(ZY),使得XY,YZ成立,则称R满足第3范式记为R3NFN若R3NF必有R2NF若R3NF,则每一个非主属性既不部分依赖于键也不传递依赖于键。,2.3.3关系模式范式,(4)BC范式关系模式1NF,若XY且YX时X必含有键,则称R满足BCNF,并记为RBCNF。RBCNF等价于每一个决定因素属性组都包含主键。当若RBCNF时,所有非主属性对键都是完全函数依赖;所有主属性对每一个不包含它的键也是完全函数依赖;没有任何属性完全函数依赖于非键的任何一组属性。RBCNF必有R3NF。,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-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关系数据语言SQL2.3关系模式设计2.4关系数据库保护2.5关系数据事务管理,关系数据库保护是指数据库完整性保护和安全性保护数据库完整性保护:防范目标:数据库中不符合语义即不正确的数据防范对象:合法用户的非法操作数据库安全性保护:防范目标:保护数据库防止恶意破坏和非法存取防范对象:非法用户的非法操作,2.4关系数据库保护,数据库完整性:逻辑描述上:数据正确性和相容性技术实现上:指数据实体完整性、参照完整性、用户完整性(1)实体完整性在CREATETABLE由PRIMARYKEY定义如主键由单属性构成,可将其定义为列级约束条件如主键由多属性构成,需将其定义为表级约束条件,2.4.1完整性保护,(2)参照完整性保护关系模式参照完整性在CREATETABLE中用FOREIGNKEY定义哪些列为外键用REFERENCES指明这些外键参照哪些表的主键。例如,关系SC一元组表示一学生选修的某门课程的成绩(Sno,Cno)是主键Sno,Cno分别参照引用Student主键和Course主键,2.4.1完整性保护,出现破坏参照完整性情形时DBMS会进行相应处理,2.4.1完整性保护,违反参照完整性三种处理方式:拒绝(NOACTION):系统默认策略;级联(CASCADE)设置为空值(SET-NULL)对于参照完整性,除定义外键外还应定义外键列是否允许空值,2.4.1完整性保护,(3)用户定义完整性保护用户定义完整性约束在SQL中分为两种类型:直接使用:创建关系表时定义用户约束属性级约束元组级约束间接调用:独立定义用户完整性约束断言约束域约束,2.4.1完整性保护,间接调用:独立定义用户完整性约束断言(Asseertion)完整性约束涉及多个关系或聚合时可使用SQL“断言”约束创建:CREATEASSERTIONCHECK()与SELECT语句中WHERE子句条件关系达式相同,2.4.1完整性保护,撤销:DROPASSERTION撤销断言句法不提供RESTRICT和CHECK()例10关系T,S,C,SC中使用断言写出完整性约束。每位教师开设的课程不超过10门CREATEASSERTIONASSE1CHECK(10=ALL(SELECTCOUNT(C#)FROMCGROUPBYT#));,2.4.1完整性保护,域(Domain)约束SQL支持域的使用,可创建一个域并在其上定义相应约束域约束作用于所有属于指定域的属性列创建:CREATEDOMAINCHECK域约束语句可使用CHECK子句。为便于引用,约束可以命名。约束命名使用保留字CONSTRAINT。,2.4.1完整性保护,CREATEDOMAINGradesCHAR(1)DEFULT?CONSTRAINTVALID-GradesCHECK(VALUEIN(A,B,C,D,E,?)上述定义一个新的域Grades并加一个名为“VALID-Grades”域约束CHECK子句指明定义在该域列上取值,缺省值为“?”,2.4.1完整性保护,如对SC(S#,C#,G)中G用域Grades定义:CREATETABLESC(S#NUMERIC(6),C#CHAR(6),GGrades,);对SC进行插入操作时,每插入一条学生成绩记录,其成绩G须为CHECK子句指明值,缺省时为“?”否则为非法成绩值,系统将会产生一个含有约束名为“VALID-Grades”的诊断信息,以关系明当前操作不满足该域约束,2.4.1完整性保护,数据库安全性涉及技术安全、管理安全和政策安全数据库学科主要讨论技术安全操作系统安全、网络安全数据库自身安全技术。数据库安全技术:数据库自身安全技术数据库自身安全技术:数据库安全性控制、视图和审计其中安全性控制是数据库安全性保护主要技术支撑,2.4.2安全性保护,(1)基于存取控制的安全性技术数据库安全性控制:自主存取控制和强制存取控制自主存取控制(DAC):用户对于不同数据库对象具有不同存取权限不同用户对同一数据库对象具有不同存取权限只有具有相应权限的用户才能存取相应的数据库对象,2.4.2安全性保护,用户权限:数据库对象操作类型数据库对象:数据库、基本表、视图和索引等数据库操作:创建、更新、查询等RDBMS支持自主存取控制SQL通过GRANT和REVOKE语句实现自主存取控制,2.4.2安全性保护,强制存取控制(MAC):每个数据库对象都分配一个“密级”每个用户也被授予一个级别对于每个数据库对象,根据其密级,具有相应合法许可证级别的用户才能存取相比自主存取控制,强制存取控制安全性检查更为严格实际应用中,在实现MAC之前先实现DAC,由两者共同构成数据库的安全性保护,2.4.2安全性保护,(2)基于视图的安全性保护为不同用户创建不同视图通过将数据对象限制在一定范围把需要保密的数据对无权存取的用户屏蔽起来自动为数据提供一定程度的安全性保护例11建立计算机系学生的视图,把对该视图的SELECT权限授于王平,把该视图上的所有操作权限授于张明,2.4.2安全性保护,先建立计算机系学生的视图CS_StudentCREATEVIEWCS_StudentASSELECT*FROMStudentWHERESdept=CS;,2.4.2安全性保护,(3)基于审计的安全性保护基于存取控制和视图安全性机制可看作是“事先预防”任何安全性措施都会有缺陷,都有可能被攻破审计(audit):将用户对于数据库对象所有操作都通过审计日志予以记录然后通过审计跟踪性心重现导致数据库安全性破坏的一系列事件从而发现非法存取的人、事件和内容等,2.4.2安全性保护,第2讲关系数据库基础,2.1关系数据模型2.2关系数据语言SQL2.3关系模式设计2.4关系数据库保护2.5关系数据事务管理,完成业务工作常常会涉及到多个数据操作组成的序列只有序列中每个操作都完成才能实现一项业务工作这些可单个执行的操作有内在关联它们组成的操作序列需看做一个不可分割的工作单元这种工作单元就是数据库中的事务,2.5关系数据事务管理,事务(transaction):满足下述性质的数据操作序列:工作执行的原子性(Atomic)序列中数据操作“要么全做,要么全不做”,不能存在部分完成情况更新操作的一致性(consistency)执行数据更新过程中保证数据前后一致性,能够从一种一致性状态转换到另一种一致性状态,2.5关系数据事务管理,并发执行的隔离性(Isolation)如果多个操作序列同时执行,最终效果需与单个操作序列独立执行相同成功结果的持久性(Durability)当操作序列成功执行后相应数据结果于数据库影响持久,即便是当数据库发生故障遭到破坏时也能恢复原先结果,2.5关系数据事务管理,数据库基本目标是对实现对数据的统一管理和用户共享实现用户共享数据技术途径:多项数据库操作并发执行进行统一管理数据重要任务:数据库故障恢复,2.5关系数据事务管理,数据库共享:多用户同时使用数据库中同一数据即数据库多事务并发执行多事务并发执行三种实现方式事务串行执行每时刻只有一个事务运行其它事务须等该事务结束方能运行缺点:不能充分利用系统资源,发挥数据库共享资源特征,2.5.1并发控制,交叉并发方式(InterleavedConcurrency)单处理机系统并行事务操作轮流交叉运行,事务没真正并行运行,但能减少处理机的空闲时间,提高系统效率同时并发方式(simultaneousconcurrency)多处理机系统每个处理机可运行一个事务,多个处理机可以同时运行多个事务,真正实现多事务并行运行。,2.5.1并发控制,多事务并发执行研究课题如果不进行并发控制,会出现哪些问题,又如何解决?并发调度有多种方式,如何判定那种方式“合适”?并发执行的复杂性,在上述两个问题之外,还会产生什么问题,又如何解决?,2.5.1并发控制,1.并发控制基本技术(1)并发控制必要性并发执行需加以控制或调度,否则会出现下述问题。丢失修改不可重复读事务T1读取数据后事务T2执行更新操作使T1无法再现前一次读取结果,2.5.1并发控制,读“脏”数据事务T1修改某一数据,并将其写回磁盘事务T2读取同一数据后,T1由于某种原因被撤销这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致T2读到的数据就为“脏”数据,即不正确的数据,2.5.1并发控制,(2)封锁技术并发控制技术:事务的封锁技术。封锁是系统对事务并发执行的一种调度和控制保证系统对数据项的访问以互斥方式进行封锁基本点:对数据对象操作实行某种专有控制在一段时间内,防止其它事务访问指定资源禁止对数据J进行操作保证并发执行事务间相互隔离互不干扰,2.5.1并发控制,事务T需对数据D进行操作(读/写)时,须向系统提出申请,对D加以封锁加锁成功后,即具有对数据D一定操作与控制权限此时,其它事务不能对加锁的数据D随意操作事务T操作完成之后即释放锁此后数据即可为其它事务操作服务基于封锁技术的事务进程如图,2.5.1并发控制,2.5.1并发控制,表级封锁两种形式排它锁(eXclusivelocks):事务T对数据对象D加X锁后,T可对D进行读写其它事务只有等到T解除X锁后,才能对D进行封锁和操作排它锁实质:保证事务对数据的独占性排除其它事务对它执行过程的干扰,2.5.1并发控制,由于只容许一个事务独自封锁数据,其它申请封锁的事务只能排队等待,所以采用X锁时并发程度较低共享锁(SharingLocks):事务T对数据D加S锁之后,T可读D但不能写D其它事务可对D加S锁但不能加X锁共享锁实质:保证多个事务可以同时读A但在施加共享封锁的事务T释放D上的S锁之前其它各个事务(包括T本身)都不能写D,2.5.1并发控制,2.5.1并发控制,(3)三级封锁协议对数据封锁时需约定一些规则,如何时申请封锁、持锁时间和什么时间释放封锁等,这就是所谓封锁协议一级封锁协议:事务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锁。此方式与一级封锁协议一起构成三级封锁协议由于包含一级封锁协议,防止了丢失修改;由于包含二级封锁协议,防止了读脏数据;由于在对数据D做“写”操作时加X锁封锁,做“读”操作时加S锁封锁,这两种锁都直到事务结束后才释放,防止不可重复读。,2.5.1并发控制,2.并发控制的标准(1)可串行化调度多事务并发执行基于各事务中操作“交错”执行每一种交错方式称为并发执行一种调度方式并发执行的调度方式非常之多DBMS对并发事务不同的调度可能会产生不同的结果明确那种方式“正确”和那种方式“不正确”非常必要,2.5.1并发控制,多个事务“顺序”即“串行”执行结果总是合理的以多事务串行执行作为并发调度正确性标准可串行化(Serializable)调度:多个事务并发执行正确当且仅当其结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论