版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第5章 数据库保护 5.1 概述(summarize) 5.2 安全保护(security protection) 5.3 完整性保护(integrality protection) 5.4 事务及事务特性(transaction and its characteristics)5.5 并发控制技术(technology of control simultaneously) 5.6 数据库恢复技术(technology of restoring DB) 第5章 数据库保护 5.1 概述(summarize) 5.1 概述(summarize) 必要性:共享数据 任务: 安全性控制(Securi
2、ty Control) 完整性控制(Integrity Constraints) 并发控制(Concurrency Control) DB恢复(DB Recovery) 5.1 概述(summarize) 必要性:共享数据 5.2 安全保护(security protection) 5.2.1 概述 1.问题的提出 信息安全的重要性 人员 硬件无意地 泄露数据? 软件 可能 改变数据? 通信 天灾 有意地 破坏数据? 措施 5.2 安全保护(security protection)5.2 安全保护(security protection)计算机系统安全范畴 硬件安全 软件安全 数据安全计算机系
3、统三类安全性问题 技术安全 管理安全 政策法规 5.2 安全保护(security protection)5.2 安全保护(security protection)2.一般计算机系统安全控制机制 计算机系统安全措施的软件安全涉及到: 操作系统 网络系统 数据库管理系统 特点:层层设防 分头把关 相互配合 共保安全 泄露 改变 第一道防线第二道防线 第三道防线 损坏数据财产预防性措施检测性措施纠正性措施消极因素 威胁危险5.2 安全保护(security protection)5.2 安全保护(security protection)3.DBS安全概念 防止对DB中的数据的非授权使用。 是指保护
4、数据库,以防止不合法的使用所造成的数据泄露、更改或破坏。(避免泄露、更改或破坏)。在妥当的时刻,以妥当的形式,向妥当的人,提供妥当的数据。 4. DBS中的一般方法 1) 用户鉴别 2) 存取控制 3) 密文存储 4)审计 5)子模式隔离5.2 安全保护(security protection)5.2 安全保护(security protection)5.2.2 用户鉴别 系统提供一定的方式让用户标识自己的名字和身份,系统进行核实,通过鉴定后才提供系统使用权。 每次用户要求进入系统时,由系统将用户提供的身份标识与系统内部记录的用户合法标识进行核对,通过鉴定后才提供对系统的使用权。常用方法口令过
5、程识别上机密码卡指纹、声音、照片等回答问题 5.2 安全保护(security protection)5.2 安全保护(security protection)1.口令 :口令是常用的一种用户标识 固定口令 随机口令 口令时限2. 可读声份卡片 声波、指纹、签名、图像3回答问题用户名用户标识5.2 安全保护(security protection)5.2 安全保护(security protection)5.2.3 存取控制 1存取控制 对于获得上机权后又进一步发出存取数据库操作的户,DBMS查找数据字典,根据存取权限对操作的合法性进行检查,若用户的操作请求超出了定义的权限,系统将拒绝执行此操
6、作。 2. 方法 定义用户权限 合法权限检查5.2 安全保护(security protection)5.2 安全保护(security protection)3.自主存取控制(DAC)方法 自主存取控制DAC(Discretionary Access Control)在TCSEC/TDI安全级别中,自主存取控制处于C1级。是由用户或DBA定义存取权限的一种控制策略。目前SQL标准对DAC提供支持,通过SQL的GRANT和REVOKE命令实现。 用户权限 数据对象 操作类型 授权语句 GRANT REVOKE 访问权限由两个要素组成:数据对象和操作类型 系统通过控制它们防止非授权访问5.2 安
7、全保护(security protection)5.2 安全保护(security protection) DB数据对象名:模式、子模式、表、属性 (精度) 操作类型: Create, Select, update, insert, delete,all 其它: 如操作时间、范围, 数据对象和操作权限对应表 对象 对象类型 操作权限 属性列 TABLE SELECT, INSERT, UPDATE, DELETE ALL PRIVIEGES 视 图 TABLE SELECT, INSERT, UPDATE, DELETE ALL PRIVIEGES 基本表 TABLE SELECT, INSE
8、RT, UPDATE, ALTER, INDEX,DELETE ALL PRIVIEGES 数据库 DATABASE CREATETAB 5.2 安全保护(security protection)5.2 安全保护(security protection)控制访问授权命令的组成SQL语言的数据访问控制命令 授权命令GRANT 收回授权REVOKE 命令格式 命令格式用户名数据对象名操作类型其他GRANT,.ON TO ,|PUBLIC.WITH GRANT OPTION;REVOKE ,. ON FROM ,| public.5.2 安全保护(security protection)5.2 安全
9、保护(security protection)4 强制存取控制(MAC)方法 所谓MAC(Mandatory Access Control)是为保证更高程度的安全性,按照TDI/TCSEC标准中的安全策略的要求,所采取强制的存取检查手段。MAC在标准中处于C2级。它不是用户能直接感知或进行控制的。适用于对数据有严格而固定密级分类的部门。 1) 实体类别 主体(用户) 客体(数据) 2) 敏感度标记(label) 许可证级别(Clearance Level) 密级(Classification Level) 绝密(Top Secret)、机密(Secret) 可信(Confidential)、公
10、开(Public)5.2 安全保护(security protection)5.2 安全保护(security protection) 3)存取规则 当某一用户(主体)以某一许可证标记进入系统后,系统要求他对任何客体的存取必须遵循如下规则: 仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体; 仅当主体的许可证级别等于或小于客体的密级时,该主体才能写相应的客体。 规则禁止拥有高许可证级别的主体更新低密级的数据对象,从而防止了敏感数据的泄漏。 MAC对数据本身进行密级标记,无论数据如何复制,标记与数据是不可分割的整体。只有符合密级标记要求的用户才可以操作相应数据。 5.2 安全
11、保护(security protection)5.2 安全保护(security protection)最高密级主体最低密级主体5.2 安全保护(security protection)5.2 安全保护(security protection)DAC和MAC共同构成DBMS的安全机制安全检查DAC检查MAC检查SQL语法分析&语义检查继续5.2 安全保护(security protection)5.2 安全保护(security protection)5视图隔离机制 视图是虚表,就象架设在用户与基表之间的一道桥梁,用户可以对视图引用的数据进行操作,也可以直接访问基表,但对安全级别要求较高的数据
12、一般通过视图进行访问,从而避免直接访问基表中其他数据。对于终端用户,虽然数据库中的数据是面向全局的,但通过视图隔离,他只能看到专门为他定义的视图中与自己相关的数据。其他与他无关的数据被子模式即视图隔离或屏蔽了。 USER2通过VIEW1可以访问COLUMN1而无法访问COLUMN2,这就是VIEW1的屏蔽作用。CREAT EVIEWVIEW1 AS SELECT COLUMN1 FROM TABLE1 GRANT ALL ON VIEW1 TO USER2 5.2 安全保护(security protection)5.2 安全保护(security protection)5.2 安全保护(se
13、curity protection)5.2 安全保护(security protection) 4) 攻击审计 已发生攻击操作及危害系统安全事件的检测和审计。追踪恶意破坏活动。 2. 技术 1) 静态技术 利用软件设计说明书、流程图分析、明确易被攻击的环节。 2) 动态技术 实际运行检测(控制逻辑,) 性能测试(测试用例、仿真程序) 3) 结果验证 数据的选择、收集和分析。 5.2 安全保护(security protection)5.2 安全保护(security protection)5.2.5 数据加密 以密文形式保存和传输数据(只有知道密钥的用户才能访问)。 1. 处理流程 2. 加密
14、方法 信息编码 信息换位 信息替换 5.2 安全保护(security protection)5.3 完整性保护(integrality protection)5.3.1 概述 1、定义 数据的正确性,有效性和相容性。 指数据库中数据与现实世界的实际情况是相符合的或数据库中数据自身不存在自相矛盾的现象。A10A10U1U1U15.3 完整性保护(integrality protecti5.3 完整性保护(integrality protection) 2、功能 1)完整性要求定义; 2)监督事务执行,测试是否违反完整性限制条件; 3)若发生违反情况,则进行相应处理(拒绝、报告、纠正、忽略)。
15、现实世界的A与DB中的A保持一致,且U1、U2、U3等所有用户从DB中查询的结果均为10,则称A具有完整性,否则就是不完整的。5.3 完整性保护(integrality protecti5.3 完整性保护(integrality protection) 3、完整性类型 1)实体完整性 2)参照完整性 3)用户定义完整性 4处理 由DBMS提供的一种检查数据是否满足语义规定条件(即完整性约束条件)的机制(完整性检查)。 数据的约束条件是语义的体现,DBMS提供完整性约束条件定义机制,并将这些定义作为模式的一部分存入数据库中。 SQL语言CREATE TABLE 命令的 Constraint子句即
16、用以定义完整性约束条件。5.3 完整性保护(integrality protecti5.3 完整性保护(integrality protection)5.3.2 完整性约束条件 1、基本概念 定义:施加于DB中数据之上的语义限制条件. 约束对象粒度: 列级、元组级、关系级 约束对象状态 静态:反映DB状态合理性的约束。 动态:反映DB状态变迁的约束。 约束时机(Immediate constraints) (1)立即约束:一条语句执行完后立即检查。 (2)延迟约束:事务执行结束后检查。 例如:转帐,从A到B后,帐才能平,才能进行检查。5.3 完整性保护(integrality protecti
17、5.3 完整性保护(integrality protection)5.3 完整性保护(integrality protecti5.3 完整性保护(integrality protection) 2、静态列级约束 对一个列的取值域的约束。 数据类型约束( 类型、长度、单位、精度) 如:姓名XM为Char长8位;年龄NL为Int型,长3位。 数据格式约束 如:工作证号前2位表示省,后3位表示县,后4位 表示单位顺序号,后5位表示个人顺序号。 值域约束 如:成绩CJ100,年龄NL150,性别XB=男,女 空值约束 是否允许空值列。如:成绩CJ可为空。 其它约束 5.3 完整性保护(integral
18、ity protecti5.3 完整性保护(integrality protection) 3、静态元组约束 对一个(仅一个)元组中各列值间联系的约束。 如:总额 单价 工龄 年龄 实发工资 = 应发工资 总扣款 4、静态关系约束 对一个关系中若干元组之间或若干关系的联系的约束。 实体完整性约束 参照完整性约束 函数依赖约束 统计约束 如:职工最低工资不能低于本部门职工平均工资的50%。 老板工资不能超过员工平均工资的10倍。 5.3 完整性保护(integrality protecti5.3 完整性保护(integrality protection) 5、动态列级约束 修改列定义或列值时的约
19、束。 修改定义约束 修改定义时新老值间的约束。 如:将允许空值列改为不允许空值时,若该列值已有空值,则不可修改。 修改值约束 修改时新旧值间的约束。 如年龄不能修改得更小(只会长大)。 6、动态元组约束 修改元组时新旧值间的约束。 7、动态关系约束 施加于关系上的前后状态的约束。 如:事务的一致性和原子性约束就是保证 动态关系约束的技术。5.3 完整性保护(integrality protecti5.3 完整性保护(integrality protection)5.3.3 完整性控制 1、实体完整性(entity integrity) 对关系模式候选码施加的完整性控制。 不允许空; 不能重复。
20、 例:student (XH,XM,XB,NL) XH为主码,不能为空 course(KH,KM) KH为主码,不能为空 sc(XH,KH,CJ) XH,KH不能为空 Create table student (XH, Char(6) Primary Key,) 通常用Primary Key 定义主码,用Unique定义候选码。 一般DBMS会在Primary Key上自动加上Index 在Unique上的Index需另行声明5.3 完整性保护(integrality protecti5.3 完整性保护(integrality protection)多属码必须用表约束定义单属码可用列约束或表约
21、束定义5.3 完整性保护(integrality protecti5.3 完整性保护(integrality protection) 2、参照完整性(referential integrity) 对外码施加的完整性控制。 参照关系:外码所在关系,如STUDENT、SC,常称为从表或子表; 被参照关系:主码(同时又是另一关系中的外码)所在关系,如student, course常称为主表或父表。CLASSClno Clname Major01 双学位 计算机02 专生本 数学04 自修 物理05 研究生 化学 STUDENTSSn Sname Clno991001 牛得草 01991020 草上飞
22、 01001001 鱼得水 04001101 雪上飘 055.3 完整性保护(integrality protecti5.3 完整性保护(integrality protection) 1)外码分类父表子表不同,外码为子表的非主属性 例:关系模式 CLASS(Clno, clname, Major) 父表 STUDENTS(Sno, Sname, Clno) 子表 外码Clno是子表STUDENTS的非主属性父表与子表相同,外码为非主属性 EMPLAYEE(Eno,Ename,dept,Manager) Manager为外码,引用本表的Eno Manager为Eno的直接上司,用其Eno表示。
23、5.3 完整性保护(integrality protecti5.3 完整性保护(integrality protection)父表子表不同,外码为子表的主属性 STUDENTS(Sno, Sname, Clno) 父表 COURSEES(Cno,cname,Score) 父表 SC(Sno,cno,Grade) 子表 外码Sno,Cno,为子表SC的主属性 2)外码的取值NULL(只有外码为子表非主属性时可取空值)为父表中的某值的引用 5.3 完整性保护(integrality protecti5.3 完整性保护(integrality protection)3)控制策略(A)插入策略在从表中
24、插入元组受限插入: 仅当父表中存在插入元组在外码值的相应元组时,系统执行插入操作,否则拒绝此插入操作。递归插入 若父表中不存在与插入元组相对应的相应元组,则首先向父表中插入相应元组,然后再向子表中插入该元组。5.3 完整性保护(integrality protecti5.3 完整性保护(integrality protection)(B)修改策略修改父表主码置空修改 将从表中相关记录在外码上的值全部置为NULL。 例如:要将CLASS表中的Clno01改为101,则由DBMS自动将STUDENTS表中的所有Clno01的记录的Clno属性置NULL。拒绝修改 拒绝执行此类操作。5.3 完整性保
25、护(integrality protecti5.3 完整性保护(integrality protection) 关联修改 将从表中相关记录在外码上的值一起自动修改。 例如:要将CLASS表中的Clno01改为101,则由DBMS自动将STUDENTS表中的所有Clno01的记录的Clno都修改为101。 修改从表外码 拒绝修改/受限插入 如果父表中存在待修改值,则执行,否则不允许执行此类修改操作。 例如:Sno991001的学生的Clno05,将其clno改为01,则执行,如果改为AA,则拒绝执行。(CLASS表中不存在clnoAA的记录)5.3 完整性保护(integrality prote
26、cti5.3 完整性保护(integrality protection)递归插入 如果父表中不存在待修改值,则先在父表中自动插入一条包含修改值的记录,然后再修改从表外码。 例如:上例中将Sno991001的学生的clno改为AA的操作。用此控制策略,将先在CLASS表中插入clnoAA的记录,然后将STUDENTS中的Sno991001的学生的clno改为AA。(C)删除策略删除父表元组置空删除(NULLIFIES) 删除父表中元组的同时,自动将子表中的相关元组的外码置NULL值。 例如:删除CLASS表clno01的元组时,DBMS自动将STUDENTS表中所有clno01的元组的clno改
27、为NULL值。5.3 完整性保护(integrality protecti5.3 完整性保护(integrality protection)受限删除(RESTRICTED) 发出警告,拒绝执行此类操作。关联删除(CASCADES) 删除父表中元组的同时,自动删除子表中的相关元组。 例如:删除CLASS表clno01的元组时,DBMS自动将STUDENTS表中所有clno01的元组一起删除。 株连九族式。 5.3 完整性保护(integrality protecti5.3 完整性保护(integrality protection) 3、用户定义完整性(integrity of user defi
28、nition) 1)空值控制 对给定属性施加不允许空值限制(NOT NULL) 2)单个属性控制(Check约束) 为:(CJ is Null) OR (CJ BETWEEN O AND 100) 3)多属性控制 如:XB=男 AND NL=30 4)触发器(Trigger) Trigger则是基于对表的操作(动作)的; 当指定的表上发生特定的操作,系统便激活Trigger程序。产品均支持T 5.3 完整性保护(integrality protecti5.4 事务及事务特性(transaction and its characteristics) 5.4.1 事务(transaction) 1
29、、定义 构成一个独立逻辑工作单位的数据库操作集。 一条SQL语句; 一组SQL语句序列; 一个包含对DB操作的应用程序。5.4 事务及事务特性(transaction and it5.4 事务及事务特性(transaction and its characteristics) 2、构成方式 显式 BEGIN TRANSACTION SQL语句 END TRANSACTION/COMMIT/ROLLBACK 其中:COMMIT提交,事务对DB的修改写回到磁盘上的DB中去。ROLLBACK:回滚,撤消对DB之修改,恢复到事务开始状态。 缺省 一条或多条SQL语句 COMMIT/ROLLBACK5.
30、4 事务及事务特性(transaction and it5.4 事务及事务特性(transaction and its characteristics)5.4.2 事务的ACID性质 1、原子性(Atomicity) 定义 事务是一个不可分割的工作单元,其对DB的操作要么都做,要么都不做。 目标 保证DB数据的一致性(转帐问题)。 技术 日志 + ROLLBACK(UNDO)(意外终止); 并发控制(交叉执行)。 实现 实现由DBMS自动完成。5.4 事务及事务特性(transaction and it5.4 事务及事务特性(transaction and its characteristic
31、s) 2、一致性(consistency) 定义 事务的执行必须是将DB从一个正确(一致)状态转换到另一个正确(一致)状态。 如:转帐问题中,A有100万人民币是一个正确状态,减去50万,转到B帐上50万,DB从一个正确状态转变到另一个正确状态,这两个操作,若只做其中一个,则不能实现DB从一个正确状态转到另一个正确状态,破坏了事务一致性。 目标 保证DB数据一致性(丢失更新、读脏、读不可重复)。 技术 并发控制。 实现 用户定义事务(保证相关操作在一个事务中); DBMS自动维护之。 5.4 事务及事务特性(transaction and it5.4 事务及事务特性(transaction a
32、nd its characteristics) 3、隔离性(isolation) 定义 一个事务中对DB的操作及使用的数据与其它并发事务无关,并发执行的事务间不能互相干扰。 目标 防止链式夭折。 技术 并发控制。 实现 DBMS自动实现。5.4 事务及事务特性(transaction and it5.4 事务及事务特性(transaction and its characteristics) 4、持久性(durability) 定义 一个已提交事务对DB的更新是永久性的,不受后来故障的影响。 目标: 保证DB可靠性 技术 备份+日志。 实现: DBMS恢复子系统自动实现。 5.4 事务及事务特
33、性(transaction and it5.5 并发控制技术(technology of control simultaneously) 并发操作调度: 保证多用户并发操作数据库中信息时的正确性、一致性所采取的措施。 封锁 : 一种并发调度的技术。 5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of control simultaneously) 5.5.1 并发操作调度 1. 问题的提出 1)丢失更新(lost update) 两个以上事务从DB中读入同一数据并修改之,其中一事务的提交结果破坏了另一事务的提交结果,导致该事务对DB的修
34、改被丢失。 2)不可重复读(read norepeatable) 同一事务重复读同一数据,但获得结果不同。 3)读“脏”数据 (read dirty) 读未提交的随后又被撤消(Rollback)的数据。 5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of control simultaneously) 1)丢失更新 丢失修改是指事务1与事务2从数据库中读入同一数据并修改,事务2的提交结果破坏了事务1提交的结果,导致事务1的修改被丢失。 例:在图中,事务1与事务2先后读入同一个数据A=16,事务1执行AA1,并将结果A=15写回,事务2执
35、行AA1,并将结果A=15写回。事务2提交的结果覆盖了事务1对数据库的修改,从而使事务1对数据的修改丢失。时间 T1 DB中A值 T2 注:A=16表示从DB中读入A值。 t1 读A=16 16 t2 读A=16 t3 计算A:=A-1 存盘COMMIT 15 t4 15 计算A:=A-1存盘COMMIT 5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of control simultaneously)5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of control simul
36、taneously)2)不可重复读 不可重复读是指事务1读取数据后,事务2执行更新操作,使事务1无法再现前一次读取结果。 具体地讲,不可重复读包括三种情况: 事务1读取某一数据后,事务2对其做了修改,当事务1再次读该数据时,得到与前一次不同的值。 事务1按一定条件从数据库中读取某些数据记录后,事务2删除了其中部分记录,当事务1再次按相同条件读取数据时,发现某些记录神秘地消失了。 事务1按一定条件从数据库中读取某些数据记录后,事务2插入了一些记录,当事务1再次按相同条件读取数据时,发现多了一些记录。5.5 并发控制技术(technology of contr5.5 并发控制技术(technolo
37、gy of control simultaneously)时间 T1 DB中值 T2 t1 读A=50读B100计算S:AB 150 A50B100S150 t2 A50B200S150 读B=100计算B:2*B =200COMMIT t3 读A=50读B200计算S:AB 250 事务T1验算结果不正确 5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of control simultaneously) 3)读“脏”数据 指事务T1修改某一数据,并将其写回磁盘(并未提交,OS的I/O调度结果),事务T2读取同一数据后,T1由于某种原因
38、被撤销,这时T1修改过的数据恢复原值,T2读到的数据与数据库中的数据出现不一致,T2读得的不稳定的瞬间数据称为“脏”数据。 例如:T1将C值修改为200,T2读C为200,若T1被撤销,其修改作废,C应恢复为100,这时再看T2读到的C值就成了无根据的数据。5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of control simultaneously) 产生上述三类数据不一致的原因:并发操作破坏了事务的隔离性。因此对事务的并发操作必须加以控制,才能避免此类现象的发生。 并发控制:用正确的方法调度并发操作,使一个事务的执行不受其他事务的
39、干扰,从而避免数据的不一致现象。5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of control simultaneously) 2.正确性标准 1)单个事务 若非并发的执行,每个事务都能保证DB的正确性。 (上述问题,都是因事务并发执行产生) 2)多个事务 多个事务以任意串行方式执行都能保证DB的正确性。 时间 T1 DB中A值 T2 注:无论是T1、T2顺序或是T2、T1顺序,结果A都为14 t1 读A=16 16 t2 A:A1 t3 COMMIT 15t415 A=15 t515A:=A-1 t614 COMMIT 5.5 并
40、发控制技术(technology of contr5.5 并发控制技术(technology of control simultaneously) 显然,任何一事务并发执行时禁止其它事务执行,总能保证DB正确性,但不利于数据共享。 3)可串行化调度(Serializability) 当且仅当多个事务并发执行的结果与该事务任一串行执行的结果相同时,则该并发执行是可串行化的。 3.并发控制(可串行化调度)方法 1) 加锁控制(Locking) 2) 乐观假设(Optimistic) 3) 时标(timestamping) 5.5 并发控制技术(technology of contr5.5 并发控制
41、技术(technology of control simultaneously)5.5.2 封锁 1、封锁 并发控制的一种技术。 2、封锁规则 对将要存取的数据须先申请加锁,加锁成功才能存取; 已被加锁的数据不能再加不相容锁; 一旦退出使用应适时释放锁; 未被加锁的数据不可对之解锁。 3、封锁类型 1)排它锁(X锁:exclusive lock)又称写锁 若事务Ti持有数据Di的X锁,则Ti可读、写Di,其它任何事务不能再对Di加任何锁,直至Ti释放该X锁。X锁用于写保护,防止丢失更新。5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of
42、 control simultaneously) 2)共享锁(S锁:share lock)又称读锁 若事务Ti持有数据Di的S锁,则其它事务仍可对Di加S锁,但不可加X锁,直到Ti释放该S锁。一旦施加S锁,读可共享但其它事务不可改。S锁用于读操作。 封锁类型的相容矩阵T1 T2 X S Y相容的请求N 不相容的请求 X N N Y S N Y Y Y Y Y 5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of control simultaneously) 4.申请时机 1) 事务开始时申请(常用) 无死锁; 锁开销少; 并发性低 2)
43、一个SQL语句开始时 并发性高;锁开销大;易产生死锁;提交频繁 5.封锁粒度(granularity) 被封锁数据的范围 逻辑单元:整个DB、整个关系、整个索引、元组、索引项、属性值集、属性值。 物理单元 :块、数据页、索引页。 评价: 1)粒度大:被封锁对象少,并发性差,开销小。 2)粒度小:被封锁对象多,并发性高,开销大。5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of control simultaneously) 6.封锁粒度选择的一般策略 1)需常存取多个关系的大量元组时宜采用DB级粒度; 2)需常存取单个关系大量元组时宜采
44、用关系级粒度; 3)需常存取单个关系少量元组时宜采用元组级粒度; 4)一般不采用属性级粒度; 5)物理单元一般不宜采用。 7.封锁协议(Locking protocol) 1) 概念(何谓封锁协议) 申请、持有和释放锁的规则。 2) 目的 实现正确的并发操作调度。 3) 类别 支持一致性维护的三级封锁协议; 支持并行调度可串行化的两段锁协议; 避免死锁协议。5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of control simultaneously)5.5.3 三级封锁协议 11级封锁协议 1)策略 事务Ti在修改数据Di之前须先对
45、Di加X锁,直到事务Ti结束(commit/rollback)才释放。 2)功能 防止丢失修改; 保证Ti可恢复(若意外终止,则rollback后才可释放)。 3)问题: 不能防止不可重复读和读“脏”数据。 (1级协议仅对修改操作,若读则不加锁 ) 5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of control simultaneously)遵循一级封锁协议的一种调度T1 T2 T1 T2 T1 T2 1)Xlock(A)= T读A=16 A=50B=100 Xlock(C)=TC=100 2)Xlock(A)=F C:=2*C=2
46、00 3)A:=A-1=15 Xlock(S)=T S:=A+B=150 B=200C=200 4)Xlock(A)= F ROLLBACK 5)COMMIT COMMIT UNLOCK(C) 6)Xlock(A)= F Unlock(B) 7)Unlock(A) A=50 B=200 8)Xlock(A)=T 读 A15 Xlock(S1)=T S1:=A+B=250 9) A:=A-1=14 10)COMMIT S!S1 写丢失避免了! 不可重复读 读“脏” 数据 5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of control
47、simultaneously)22级封锁协议 1) 策略 1级封锁协议加上事务Ti在读取Di之前必须对Di加S锁,读完后即可释放该S锁。 2) 功能 防止丢失修改; 防止读脏。 3)问题:不能防止读不可重复(读完即释放,重读时可能其它事务对之修改)。 5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of control simultaneously) 遵循二级封锁协议的一种调度 T1 T2T1 T2 1)SLOCK(A)=.T. A=50SLOCK(B)=.T. B=100 Xlock(C)=.T.C=100C:=2*C=200 2)Un
48、lock(A) Unlock(B) SLOCK(C)=.F. 3)Xlock(S)=.T. S:=A+B=150 ROLLBACK 4) Xlock(B)=.T. B=100B=B*2=200 SLOCK(C)=.F. 5)COMMIT UNLOCK(C) 6)Unlock(B) SLOCK(C)=.T 7) SLOCK(A)=.T. SLOCK(B)=.T. A=50 B=200 Unlock(A) Unlock(B) C=100 8)9)Xlock(S1)=.T. S1:=A+B=250 S!S1 不可重复读不能避免读“脏”数据避免了 5.5 并发控制技术(technology of co
49、ntr5.5 并发控制技术(technology of control simultaneously)33级封锁协议 1) 策略 在1级封锁协议上加上事务Ti读Di前须先对Di加S锁,直至Ti结束后才释放该S锁。 2) 功能 防止丢失修改; 防止读“脏”; 防止读不可重复。 5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of control simultaneously)遵循三级封锁协议的一种调度 T1 T2T1 T2 1)SLOCK(A)=.T. A=50SLOCK(B)=.T. B=100 Xlock(C)=.T.C=100C:=2
50、*C=200 2)Xlock(B)=.F. SLOCK(C)=.F. 3)Xlock(S)=.T. S:=A+B=150 ROLLBACK 4)SLOCK(C)=.F. 5)Xlock(S1)=.T.A=50 B=100S1:=A+B=150 COMMIT UNLOCK(C) 6)Unlock(A) Unlock(B)Unlock(B) SLOCK(C)=.T 7)Xlock(B)=.T. B=100 B=B*2=200C=100 8) SS1可重复读 读“脏”数据避免了5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of control
51、 simultaneously) 三级封锁协议的主要区别在于何种操作需要申请封锁,以及获得封锁后何时释放锁(持锁时间)。分别采用三级封锁协议中不同级别的协议,得到的一致性保证是不同的。X锁S锁 一致性保证 操作结束释放 事务结束释放 操作结束释放 事务结束释放 不丢失修改 不读脏数据 可重复读 一级 二级 三级 5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of control simultaneously)5.5.4 死锁(dead lock) 1含义 两个或两个以上事务均处于等待状态,每个事务都在等待其中另一个事务封锁的数据,导致任
52、何事务都不能继续执行的现象称为死锁。 2产生条件 互斥(排它性控制); 不可剥夺(释放锁前,其它事务不能剥夺); 部分分配(每次申请一部分,申请新的锁时,又占用已 获得者); 环路(循环链中,每事务获得的数据同时又被另一事务 请求)。 5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of control simultaneously) T1、T2是两个均须修改数据A、B的事务,如果用户程序遵循三级封锁协议,但申请锁的顺序是随机的,则有可能出现下列情况死锁 T1 T2 XLOCK(A).T.READA(A) XLOCK(B)=.T.READ
53、(B) XLOCK(B)=.F.(等待) T1等待获得B的锁 XLOCK(A)=.F.(等待) T2等待获得A的锁 XLOCK(B)=.F.(等待) T1等待获得B的锁 (等待) XLOCK(A)=.F.(等待) T2等待获得A的锁 (等待) 一直等待下去 5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of control simultaneously)3预防: 防止产生条件之一发生(破坏产生死锁的条件) 一次封锁法 每个事务事先一次获得所需数据的全部锁。 如:T1获得所有数据A、B锁,T1连续执行,T2等待;T1执行完后释放A、B锁,
54、T2继续执行,不会发生死锁。 特征:简单;无死锁;粒度大;并发度低; 难以确定封锁对象。 (DB数据变化,不能预先确定封锁对象,只好扩大封锁范围) 顺序封锁法 事务按预先确定的数据封锁顺序实行封锁。 如:B树从根开始 特征: 无死锁; 顺序难以确定; (运行中才发现要封锁对象)封锁对象难以确定。 5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of control simultaneously)4.诊断与解除 等待图法;构造事务的等待图;周期性检测该等待图;判断存在回路否;存在,则撤消某一事务; 选择一个处理死锁代价最小的事务(NP难度问
55、题);释放所有锁,使其它事务继续运行。 超时法 当一个事务的等待时间超过规定的时限,则认为发生死锁,撤销该事务。实现简单存在问题 可能误判死锁;时限标准难以把握5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of control simultaneously) 5.5.5 活锁(live lock) 1、含义 事务因故永远处于等待状态。 如:T1 T2 T3 T4 Tn LOCK(R)=.T. LOCK(R)=.F. LOCK(R)=.F. LOCK(R)=.F. UNLOCK(R) LOCK(R)=.F. LOCK(R)=.T. LOC
56、K(R)=.F. LOCK(R)=.F. LOCK(R)=.F. LOCK(R)=.F. UNLOCK(R)LOCK(R)=.F. (等待) LOCK(R)=.T. 5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of control simultaneously)2、预防方法 FCFS:First Come First Server先来先服务。 对于事务有优先级的系统,可设置一个最长等待时间,与优先级结合,调度事务的执行。 5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of co
57、ntrol simultaneously)5.5.6 两段锁协议- 2PL:two-phase locking1可串行性 可串行性是事务并发执行正确性的判断准则,给定一个并发调度,当且仅当它是可串行化的,才认为它是正确的。 假设有两个事务:T1 T2,数据库中A、B的初值均为2; T1:读B;AB1;写回A T2:读A;BA1;写回B 串行调度只有两种可能: T1T2 结果为:A3,B4 T2T1 结果为:A4,B35.5 并发控制技术(technology of contr5.5 并发控制技术(technology of control simultaneously)下面给出几种不同的调度策
58、略 T1 T2 T1 T2 T1 T2 T1 T2 SLOCK(B)Y=B=2Unlock(B)Xlock(A)A=Y+1=3写回AUnlock(A) SLOCK(A)X=A=3Unlock(A)Xlock(B)B=X+1=4写回BUnlock(B) SLOCK(B)Y=B=3Unlock(B)Xlock(A)A=Y+1=4写回AUnlock(A) SLOCK(A)X=A=2Unlock(A)Xlock(B)B=X+1=3写回BUnlock(B) SLOCK(B)Y=B=2Unlock(B)Xlock(A)A=Y+1=3写回AUnlock(A) SLOCK(A)X=A=2Unlock(A)Xl
59、ock(B)B=X+1=3写回BUnlock(B) SLOCK(B)Y=B=2Unlock(B)Xlock(A)A=Y+1=3写回AUnlock(A) SLOCK(A)等待等待等待X=A=3Unlock(A)Xlock(B)B=X+1=4写回BUnlock(B) 串行化调度 串行化调度 不可串行化调度 可串行化调度 5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of control simultaneously)2含义 事务分为两个阶段: 第一阶段称为扩展阶段(获得锁); 第二阶段称为收缩阶段(释放锁)。 遵循两段锁协议的事务,其封锁序
60、列可以为:SLOCK(A) SLOCK(B) XLOCK(C) UNLOCK(B) UNLOCK(A) UNLOCK(C) 不遵循两段锁协议的事务,其封锁序列可能为:SLOCK(A) UNLOCK(A) SLOCK(B) XLOCK(C) UNLOCK(B) UNLOCK(C) 扩展阶段 收缩阶段 5.5 并发控制技术(technology of contr5.5 并发控制技术(technology of control simultaneously)3.策略 在对任何数据读、写之前,须先获得该数据锁(且); 在释放一个封锁之后,该事务不能再申请任何其它锁。4.目标: 实现并发操作调度的可串行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 评茶师操作测试考核试卷含答案
- 堆场机械维修工诚信道德强化考核试卷含答案
- 架线维护工创新实践知识考核试卷含答案
- 鞋类设计师安全生产能力竞赛考核试卷含答案
- 原油蒸馏工安全文化能力考核试卷含答案
- 户外体育课请假条格式准确的范文
- 环卫工人的请假条范文
- 2025年光纤用GECL4项目合作计划书
- 2026年零食量贩店 低成本营销项目营销方案
- 环境生物技术
- SMT工艺流程介绍
- 净化工程高架地板施工方案
- 急诊分区分级课件
- 财务竣工决算管理办法
- 2.3河流与湖泊第2课时长江课件-八年级地理上学期人教版
- GB/T 45983.1-2025稀土化学热处理第1部分:渗碳及碳氮共渗
- 重庆西师附中2026届中考英语模试卷含答案
- 2025法官遴选考试题及答案
- 中石油资质管理办法
- 慢阻肺随访表电子版
- 办公楼强电工程维保方案
评论
0/150
提交评论