已阅读5页,还剩116页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第九章数据库保护 数据库系统中的数据是由DBMS统一管理和控制的 为了适应数据共享的环境 DBMS必须提供数据保护能力 以保证数据库中数据的安全可靠和正确有效 数据保护安全性数据库恢复并发控制完整性 前面章节讲了 1 9 1数据库安全性 9 1 1问题的提出9 1 2计算机安全性概述9 1 3计算机系统中的安全模型9 1 4SQLServer安全控制 2 9 1 1问题的提出 数据库的重要特点之一 数据共享数据共享带来问题 数据库的安全性问题数据库系统中的数据共享 有条件的共享例 军事秘密 国家机密 新产品实验数据 市场需求分析 市场营销策略 销售计划 客户档案 医疗档案 银行储蓄数据数据库的数据共享是在DBMS严格统一控制下的共享 即只允许有合法使用权限的用户访问允许他存取的数据数据库系统的安全保护措施是否有效是DBS主要的性能指标之一 3 什么是数据库的安全性数据库的安全性是指保护数据库 防止因用户非法使用数据库造成数据泄露 更改或破坏 什么是数据的保密数据保密是指用户合法地访问到机密数据后能否对这些数据保密 通过制订法律道德准则和政策法规来保证 9 1 1问题的提出 续 4 1 什么是计算机系统安全性为计算机系统建立和采取的各种安全保护措施 以保护计算机系统中的硬件 软件及数据 防止其因偶然或恶意的原因使系统遭到破坏 数据遭到更改或泄露等 9 1 2计算机安全性概述 5 计算机系统本身的技术问题计算机安全理论与策略计算机安全技术管理问题 安全管理 安全评价 安全产品法学 计算机安全法律犯罪学 计算机犯罪与侦察 安全监察心理学 2 计算机安全涉及问题 9 1 2计算机安全性概论 续 6 技术安全类 计算机系统中采用具有一定安全性的硬件 软件来实现对计算机系统及其所存数据的安全保护 当计算机系统受到无意或恶意的攻击时仍能保证系统正常运行 保证系统内的数据不增加 不丢失 不泄露管理安全类 软硬件意外故障 场地的意外事故 管理不善导致的计算机设备和数据介质的物理破坏 丢失等安全问题法律安全类 政策法律类 政府部门建立的有关计算机犯罪 数据安全保密的法律道德准则和政策法规 法令 3 三类计算机系统安全性问题 9 1 2计算机安全性概论 续 7 一 数据库安全性控制概述 用户编写一段合法的程序绕过DBMS及其授权机制 通过操作系统直接存取 修改或备份数据库中的数据 直接或编写应用程序执行非授权操作 通过多次合法查询数据库从中推导出一些保密数据 4 非法使用数据库的情况 9 1 2计算机安全性概论 续 8 1 用户标识与鉴别 用户标识与鉴别系统提供的最外层安全保护措施基本方法系统提供一定方式让用户标识自己的名字或身份 系统内部记录着所有合法用户的标识 每次用户要求进入系统时 由系统核对用户提供的身份标识 通过鉴定后才提供机器使用权 9 1 3计算机系统中的安全模型 9 2 存取控制 存取控制机制的组成定义存取权限 在数据库系统中 必须定义每个用户的存取权限 检查存取权限 对于合法用户 系统根据其存取权限定义对他的各种操作请求进行控制 确保只执行合法操作 DBMS查找数据字典 根据其存取权限对操作的合法性进行检查 若用户的操作请求超出了定义的权限 系统将拒绝执行此操作用户权限定义和合法权检查机制一起构成DBMS的安全子系统 9 1 3计算机系统中的安全模型 10 3 视图机制 视图能够对无权访问的用户屏蔽需保密的数据 提供部分安全保护机制 视图机制更主要的功能在于提供数据独立性 视图机制与授权机制配合使用 首先用视图机制屏蔽掉一部分保密数据视图上面再进一步定义存取权限间接实现了支持存取谓词的用户权限定义 9 1 3计算机系统中的安全模型 11 例 王平只能检索计算机系学生的信息先建立计算机系学生的视图CS StudentCREATEVIEWCS StudentASSELECTFROMStudentWHERESdept CS 在视图上进一步定义存取权限GRANTSELECTONCS StudentTO王平 9 1 3计算机系统中的安全模型 12 4 数据加密 数据加密防止数据库中数据在存储和传输中失密的有效手段加密的基本思想根据一定的算法将原始数据 术语为明文 Plaintext 变换为不可直接识别的格式 术语为密文 Ciphertext 不知道解密算法的人无法获知数据的内容DBMS中的数据加密有些数据库产品提供了数据加密例行程序有些数据库产品本身未提供加密程序 但提供了接口 9 1 3计算机系统中的安全模型 13 9 1 4SQLServer的安全性控制 1 SQLServer安全性模型 9 1 4SQLServer的安全性控制 1 服务器安全性 身份验证 LoginAuthentication 建立在控制服务器登录帐号和密码的基础上 验证用户连接到SQLServer数据库服务器的资格 即验证该用户是否具有连接到数据库服务器的 连接权 15 9 1 4SQLServer的安全性控制 2 数据库安全性 合法用户验证 DatabaseUserAccountsandRoles 用户在经过SQLServer服务器的安全性检验后 将直接面对不同的数据库入口 当用户访问数据库时 他必须具有对具体数据库的访问权 3 数据库对象安全性 操作权验证 PermissionValidation 当用户操作数据库中的数据或对象时 他必须具有所要进行的操作的操作权 必须验证用户是否具有操作许可 16 1 Windows身份验证模式Windows身份验证模式允许用户通过Windows操作系统的用户进行连接 在这种模式下 SQLServer使用基于Windows的功能对网络用户进行验证 无需再提供登录账号和密码 系统会从用户登录到Windows时提供的用户名和密码中查找当前用户的登录信息 以判断其是否是SQLServer的合法用户 9 1 4SQLServer安全性控制 2 身份认证 17 2 混合验证模式SQLServer接受Windows授权用户和SQL授权用户非Windows合法用户若要使用SQLServer 应该使用这种混合验证模式 混合验证模式有两种方式连接SQLServer服务器通过Windows用户账号连接的用户可以使用信任连接 多协议或命名管道 分别验证操作系统和SQLServer的用户合法性 9 1 4SQLServer安全性控制 18 SQLServer中有两类帐号 一类为登录服务器的用户注册帐号 另外一类为数据库用户帐号1 登录帐号 又称为登录标识符 LoginID 用户只有以合法的登录帐户登录到SQLServer 才能在SQLServer中执行相应的操作 3 服务器安全管理 9 1 4SQLServer安全性控制 19 20 2 管理数据库用户帐号拥有合法登录账号 只能连接到SQLServer服务器 不具有访问任何数据库的能力数据库的合法用户才能访问数据库数据库的用户 由服务器合法登录账号 映射 到数据库管理数据库用户的过程就是建立登录账号与数据库用户之间的映射关系的过程 默认情况下 新建立的数据库只有一个用户 就是 dbo 它是数据库的拥有者 9 1 4SQLServer安全性控制 一个登录账号可以映射为多个数据库中的用户 数据库用户与登录帐号的映射 9 1 4SQLServer安全性控制 21 4 管理权限数据库的合法用户 除了具有一些系统表的查询权之外 并不对数据库中的对象具有任何操作权 需要为数据库中的用户授予数据库对象的操作权 权限分类 1 对象权限用户对数据库中的表 视图 存储过程等对象的操作权2 语句权限专指是否允许执行下列语句有关的操作 3 隐含权限指由SQLServer预定义的服务器角色 数据库角色 数据库拥有者和数据库对象拥有者所具有的权限 9 1 4SQLServer安全性控制 22 权限的设置包含三个内容 1 授予权限 GRANT 允许用户或角色具有某种操作权 2 收回权限 REVOKE 不允许用户或角色具有某种操作权 或者收回曾经授予的权限 3 拒绝访问 DENY 拒绝某用户或角色具有某种操作权 即使用户或角色由于继承而获得这种操作权 也不允许执行相应的操作 管理权限可以使用SSMS实现 也可以使用T SQL语句实现 9 1 4SQLServer安全性控制 权限管理 23 1 授权 GRANT语句的一般格式 GRANT ON TO WITHGRANTOPTION DBA和表或视图的建立者 即属主 拥有对该表或视图的一切操作权限GRANT 将对指定操作对象的指定操作权限授予指定的用户 WITHGRANTOPTION子句 获得某种权限的用户还可以把这种权限再授予别的用户 9 1 4SQLServer安全性控制 权限管理 24 例1把查询Student表权限授给用户U1GRANTSELECTONTABLEStudentTOU1 例2把对Student表和Course表的全部权限授予用户U2和U3GRANTALLPRIVILIGESONTABLEStudent CourseTOU2 U3 例3把对表SC的查询权限授予所有用户GRANTSELECTONTABLESCTOPUBLIC 9 1 4SQLServer安全性控制 权限管理 25 2 传播权限 执行例5后 U5不仅拥有了对表SC的INSERT权限 还可以传播此权限 GRANTINSERTONTABLESCTOU6WITHGRANTOPTION 同样 U6还可以将此权限授予U7 GRANTINSERTONTABLESCTOU7 但U7不能再传播此权限 U5 U6 U7 9 1 4SQLServer安全性控制 权限管理 26 3 收回权限 REVOKE语句的一般格式为 REVOKE ON FROM 功能 从指定用户那里收回对指定对象的指定权限 9 1 4SQLServer安全性控制 权限管理 27 例7把用户U4修改学生学号的权限收回REVOKEUPDATE Sno ONTABLEStudentFROMU4 例8收回所有用户对表SC的查询权限REVOKESELECTONTABLESCFROMPUBLIC 例9把用户U5对SC表的INSERT权限收回REVOKEINSERTONTABLESCFROMU5 9 1 4SQLServer安全性控制 权限管理 28 5 角色 Role 在SQLServer中 将一组具有相同权限的用户组织在一起 这一组具有相同权限的用户就称为角色 利用角色设置 管理用户的权限 只对角色进行权限设置便可以实现对所有用户权限的设置SQLServer具有以下几种角色 1 public角色 2 固定服务器角色 固定数据库角色 3 用户定义的角色 4 应用程序角色 9 1 4SQLServer安全性控制 角色 29 预定义角色 9 1 4SQLServer安全性控制 角色 对于用户定义角色1 系统管理员只需对权限的种类进行划分 然后将不同的权限授予不同的角色 而不必关心有哪些具体的用户 2 当角色中的成员发生变化时 系统管理员都无需做任何关于权限的操作 30 9 2数据库恢复技术 9 2 1事务的基本概念9 2 2数据库恢复概述9 2 3故障的种类9 2 4恢复的实现技术9 2 5具有检查点的恢复技术9 2 6数据库镜像 31 AnIntroductiontoDatabaseSystem 9 2 1事务的基本概念 WhatisTransaction例 在银行应用中 将用户A账户中的1万元转移到用户B的账户上 从用户A的账户中减掉1万元 在用户B的账户上增加1万元 UserA UserB 这是一项完整的工作 事务Transaction AnIntroductiontoDatabaseSystem WhatisTransaction 事务是数据库运行中的一个逻辑工作单位 由DBMS中的事务管理子系统负责其处理事务是恢复和并发控制的基本单位事务和程序是两个概念在关系数据库中 一个事务可以是一条 一组SQL语句 或整个程序一个应用程序通常包含多个事务 AnIntroductiontoDatabaseSystem 事务 Transaction 定义一个数据库操作序列一个不可分割的工作单位恢复和并发控制的基本单位事务和程序比较在关系数据库中 一个事务可以是一条或多条SQL语句 也可以包含一个或多个程序 一个程序通常包含多个事务 AnIntroductiontoDatabaseSystem 定义事务 显式定义方式BEGINTRANSACTIONBEGINTRANSACTIONSQL语句1SQL语句1SQL语句2SQL语句2 COMMITROLLBACK隐式方式当用户没有显式地定义事务时 DBMS按缺省规定自动划分事务 AnIntroductiontoDatabaseSystem 事务的特性 ACID特性 事务的ACID特性 原子性 Atomicity 一致性 Consistency 隔离性 Isolation 持续性 Durability AnIntroductiontoDatabaseSystem 事务的特性 ACID特性 原子性 Atomicity 事务是数据库的逻辑工作单位 事务中包括的诸操作要么都做 要么都不做一致性 Consistency 一致性状态 数据库中只包含成功事务提交的结果事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态 AnIntroductiontoDatabaseSystem 事务的特性 ACID特性 隔离性 Isolation 对并发执行而言 一个事务的执行不能被其他事务干扰 且并发执行的各个事务之间不能互相干扰一个事务内部的操作及使用的数据对其他并发事务是隔离的 AnIntroductiontoDatabaseSystem 事务的特性 ACID特性 持续性 Durability或永久性Permanence 一个事务一旦提交 它对数据库中数据的改变就应该是永久性的 后续其他操作或故障不应该对其执行结果有任何影响 事务结束 COMMIT事务正常结束提交事务的所有操作 读 更新 事务中所有对数据库的更新永久生效ROLLBACK事务异常终止事务运行的过程中发生了故障 不能继续执行回滚事务的所有更新操作事务滚回到开始时的状态 9 2 1事务的基本概念 40 9 2 2数据库恢复概述 故障是不可避免的计算机硬件故障系统软件和应用软件的错误操作员的失误恶意的破坏故障的影响运行事务非正常中断破坏数据库 41 DBMS对故障的对策 DBMS提供恢复子系统保证故障发生后 能把数据库中的数据从错误状态恢复到某种逻辑一致的状态保证事务ACID恢复技术是衡量系统优劣的重要指标 9 2 2数据库恢复概述 42 1 事务故障某个事务在运行过程中由于种种原因未运行至正常终止点就夭折了事务故障的常见原因输入数据有误运算溢出违反了某些完整性限制某些应用程序出错并行事务发生死锁 43 9 2 3故障的种类 9 2 3故障的种类 事务故障的恢复发生事务故障时 夭折的事务可能已把对数据库的部分修改写回磁盘事务故障的恢复 撤消事务 UNDO 强行回滚 ROLLBACK 该事务 清除该事务对数据库的所有修改 使得这个事务象根本没有启动过一样 44 2 系统故障 系统故障类型 整个系统的正常运行突然被破坏所有正在运行的事务都非正常终止内存中数据库缓冲区的信息全部丢失外部存储设备上的数据未受影响原因 操作系统或DBMS代码错误操作员操作失误特定类型的硬件错误 如CPU故障 突然停电 9 2 3故障的种类 45 清除尚未完成的事务对数据库的所有修改系统重新启动时 恢复程序要强行撤消 UNDO 所有未完成事务将缓冲区中已完成事务提交的结果写入数据库系统重新启动时 恢复程序需要重做 REDO 所有已提交的事务 系统故障的恢复 9 2 3故障的种类 46 3 介质故障 硬件故障使存储在外存中的数据部分丢失或全部丢失磁盘损坏磁头碰撞操作系统的某种潜在错误瞬时强磁场干扰介质故障比前两类故障的可能性小得多 但破坏性大得多装入数据库发生介质故障前某个时刻的数据副本重做自此时始的所有成功事务 将这些事务已提交的结果重新记入数据库 9 2 3故障的种类 47 恢复操作的基本原理 冗余利用存储在系统其它地方的冗余数据来重建数据库中已被破坏或不正确的那部分数据恢复的实现技术 复杂一个大型数据库产品 恢复子系统的代码要占全部代码的10 以上恢复机制涉及的关键问题1 如何建立冗余数据数据转储 backup 登录日志文件 logging 2 如何利用这些冗余数据实施数据库恢复 9 2 4恢复的实现技术 48 数据转储 转储是指DBA将整个数据库复制到磁带或另一个磁盘上保存起来的过程 这些备用的数据文本称为后备副本或后援副本 9 2 4恢复的实现技术 49 故障发生点转储运行事务 正常运行 TaTbTf重装后备副本重新运行事务恢复 静态转储与动态转储海量转储与增量转储 9 2 4恢复的实现技术 50 1 静态转储 在系统中无运行事务时进行转储转储开始时数据库处于一致性状态转储期间不允许对数据库的任何存取 修改活动优点 实现简单缺点 降低了数据库的可用性转储必须等用户事务结束新的事务必须等转储结束 9 2 4恢复的实现技术 51 利用静态转储副本进行恢复 故障发生点静态转储运行事务 正常运行 TaTbTf重装后备副本恢复 9 2 4恢复的实现技术 52 2 动态转储 转储操作与用户事务并发进行转储期间允许对数据库进行存取或修改优点不用等待正在运行的用户事务结束不会影响新事务的运行动态转储的缺点不能保证副本中的数据正确有效利用动态转储得到的副本进行故障恢复需要把动态转储期间各事务对数据库的修改活动登记下来 建立日志文件后备副本加上日志文件才能把数据库恢复到某一时刻的正确状态 9 2 4恢复的实现技术 53 利用动态转储副本进行恢复 TaTbTf动态转储运行事务故障发生点正常运行 登记日志文件登记新日志文件 转储日志文件重装后备副本 然后利用转储的日志文件恢复恢复到一 致性状态 9 2 4恢复的实现技术 54 3 海量转储与增量转储 海量转储 每次转储全部数据库增量转储 只转储上次转储后更新过的数据海量转储与增量转储比较从恢复角度看 使用海量转储得到的后备副本进行恢复往往更方便但如果数据库很大 事务处理又十分频繁 则增量转储方式更实用更有效 9 2 4恢复的实现技术 55 转储策略 应定期进行数据转储 制作后备副本 但转储是十分耗费时间和资源的 不能频繁进行DBA应该根据数据库使用情况确定适当的转储周期和转储方法 例 每天晚上进行动态增量转储每周进行一次动态海量转储每月进行一次静态海量转储 9 2 4恢复的实现技术 56 日志文件 用来记录事务对数据库的更新操作的文件日志文件的格式以记录为单位的日志文件以数据块为单位的日志文件日志文件内容各个事务的开始标记 BEGINTRANSACTION 各个事务的结束标记 COMMIT或ROLLBACK 各个事务的所有更新操作与事务有关的内部更新操作 9 2 4恢复的实现技术 57 用途进行事务故障恢复进行系统故障恢复协助后备副本进行介质故障恢复 日志文件的用途 9 2 4恢复的实现技术 58 1 与静态转储后备副本配合进行介质故障恢复静态转储的数据已是一致性的数据如果静态转储完成后 仍能定期转储日志文件 则在出现介质故障重装数据副本后 可以利用这些日志文件副本对已完成的事务进行重做处理不必重新运行那些已完成的事务程序就可把数据库恢复到故障前某一时刻的正确状态 9 2 4恢复的实现技术 59 故障发生点静态转储运行事务 正常运行 TaTbTf登记日志文件 重装后备副本利用日志文件恢复事务继续运行介质故障恢复 登记日志文件 60 动态转储数据库 同时转储同一时点的日志文件后备副本与该日志文件结合起来才能将数据库恢复到一致性状态 利用这些日志文件副本进一步恢复事务 避免重新运行事务程序 2 介质故障恢复 LOGFILE 动态转储后备副本 9 2 4恢复的实现技术 61 登记日志文件的原则 为保证数据库是可恢复的 登记日志文件时必须遵循 登记的次序严格按并行事务执行的时间次序必须先写日志文件 后写数据库写日志文件操作 把表示这个修改的日志记录写到日志文件写数据库操作 把对数据的修改写到数据库中 9 2 4恢复的实现技术 62 为什么要先写日志文件写数据库和写日志文件是两个不同的操作 在这两个操作之间可能发生故障如果先写数据库修改 而没有写到日志文件中 则以后就无法恢复这个修改如果先写日志 但没有修改数据库 按日志文件恢复时只不过是多执行一次不必要的UNDO操作 并不会影响数据库的正确性 9 2 4恢复的实现技术 63 问题的提出搜索整个日志将耗费大量的时间REDO处理 重新执行 浪费了大量时间解决方案在日志文件中增加检查点记录 checkpoint 增加重新开始文件恢复子系统在登录日志文件期间动态地维护日志 9 2 5具有检查点的恢复技术 64 检查点技术 1 检查点记录的内容建立检查点时刻所有正在执行的事务清单这些事务最近一个日志记录的地址2 重新开始文件的内容记录各个检查点记录在日志文件中的地址 9 2 5具有检查点的恢复技术 65 在检查点维护日志文件 1 将当前日志缓冲区中的所有日志记录写入磁盘的日志文件上 2 在日志文件中写入一个检查点记录 3 将当前数据缓冲区的所有数据记录写入磁盘的数据库中 4 把检查点记录在日志文件中的地址写入一个重新开始文件 9 2 5具有检查点的恢复技术 66 9 2 6数据库镜像 介质故障是对系统影响最为严重的一种故障 严重影响数据库的可用性介质故障恢复比较费时为预防介质故障 DBA必须周期性地转储数据库 67 提高数据库可用性的解决方案数据库镜像 Mirror DBMS自动把整个数据库或其中的关键数据复制到另一个磁盘上DBMS自动保证镜像数据与主数据的一致性 9 2 6数据库镜像 68 数据库镜像的用途 出现介质故障时DBMS自动利用镜像磁盘数据进行数据库的恢复 不需要关闭系统和重装数据库副本 图7 5b 没有出现故障时可用于并发操作 图7 5a 一个用户对数据加排他锁修改数据其他用户可以读镜像数据库上的数据 9 2 6数据库镜像 69 9 2 6数据库镜像 70 数据库恢复小结 如果数据库只包含成功事务提交的结果 即数据库处于一致性状态 保证数据一致性是对数据库的最基本的要求 事务是数据库的逻辑工作单位DBMS保证系统中一切事务的原子性 一致性 隔离性和持续性DBMS必须对事务故障 系统故障和介质故障进行恢复恢复中常用的技术 数据库转储和登记日志文件恢复的基本原理 冗余数据 71 常用恢复技术事务故障的恢复 UNDO 系统故障的恢复 UNDO REDO 介质故障的恢复 重装备份并恢复到一致性状态 REDO 提高恢复效率的技术检查点技术可以提高系统故障的恢复效率可以在一定程度上提高利用动态转储备份进行介质故障恢复的效率镜像技术镜像技术可以改善介质故障的恢复效率 数据库恢复小结 续 72 9 3 1并发控制概述9 3 2封锁9 3 3封锁协议9 3 4活锁和死锁9 3 5并发调度的可串行性9 3 6两段锁协议9 3 7封锁粒度 9 3并发控制 73 1 多事务执行方式1 事务串行执行每个时刻只有一个事务运行 其他事务必须等到这个事务结束以后方能运行不能充分利用系统资源 发挥数据库共享资源的特点2 交叉并发方式事务的并行操作 轮流交叉运行是单处理机系统中的并发方式 能够减少处理机的空闲时间 提高系统的效率 9 3 1并发控制概述 74 3 同时并发方式 多处理机系统中 每个处理机可以运行一个事务 多个处理机可以同时运行多个事务 实现多个事务真正的并行运行最理想的并发方式 但受制于硬件环境更复杂的并发方式机制 9 3 1并发控制概述 75 2 并发控制机制的任务 对并发操作进行正确调度保证事务的隔离性保证数据库的一致性3 事务并发执行带来的问题可能会存取和存储不正确的数据 破坏事务的隔离性和数据库的一致性DBMS必须提供并发控制机制 并发控制机制是衡量一个DBMS性能的重要标志之一 9 3 1并发控制概述 76 T1的修改被T2覆盖了 数据不一致实例 飞机订票系统 9 3 1并发控制概述 77 4 并发操作带来的数据不一致性 丢失修改 lostupdate 不可重复读 non repeatableread 读 脏 数据 dirtyread 9 3 1并发控制概述 78 1 丢失修改 事务1与事务2从数据库中读入同一数据并修改事务2的提交结果破坏了事务1提交的结果 导致事务1的修改被丢失 飞机订票系统 9 3 1并发控制概述 79 2 不可重复读 事务1读取数据后 事务2执行更新操作 使事务1无法再现前一次读取结果 9 3 1并发控制概述 80 三类不可重复读 事务1读取某一数据后 a 事务2对其做了修改 当事务1再次读该数据时 得到与前一次不同的值 b 事务2删除了其中部分记录 当事务1再次读取数据时 发现某些记录神密地消失了 c 事务2插入了一些记录 当事务1再次按相同条件读取数据时 发现多了一些记录 后两种不可重复读有时也称为幻影现象 phantomrow 9 3 1并发控制概述 81 3 读 脏 数据 事务1修改某一数据 并将其写回磁盘 事务2读取同一数据后 事务1由于某种原因被撤消 这时事务1已修改过的数据恢复原值 事务2读到的数据就与数据库中的数据不一致 是不正确的数据 又称为 脏 数据 9 3 1并发控制概述 82 1 什么是封锁 封锁就是事务T在对某个数据对象 例如表 记录等 操作之前 先向系统发出请求 对其加锁加锁后事务T就对该数据对象有了一定的控制 在事务T释放它的锁之前 其它的事务不能更新此数据对象 封锁是实现并发控制的一个非常重要的技术 9 3 2封锁 83 2 基本封锁类型 基本封锁类型排它锁 eXclusivelock X锁 写锁 若事务T对数据对象A加上X锁 则只允许T读取和修改A 其它任何事务都不能再对A加任何类型的锁 直到T释放A上的锁共享锁 Sharelock S锁 读锁 若事务T对数据对象A加上S锁 则其它事务只能再对A加S锁 而不能加X锁 直到T释放A上的S锁 9 3 2封锁 84 3 锁的相容矩阵 9 3 2封锁 85 9 3 3封锁协议 在运用X锁和S锁对数据对象加锁时 需约定规则 封锁协议 LockingProtocol 何时申请X锁或S锁持锁时间 何时释放不同的封锁协议 在不同的程度上为并发操作的正确调度提供一定的保证常用的封锁协议 三级封锁协议 86 1级封锁协议 事务T在修改数据R之前必须先对其加X锁 直到事务结束才释放 读数据不加锁正常结束 COMMIT 非正常结束 ROLLBACK 1级封锁协议可防止丢失修改在1级封锁协议中 如果是读数据 不需要加锁的 所以它不能保证可重复读和不读 脏 数据 防止丢失修改 9 3 3封锁协议 87 2级封锁协议 1级封锁协议 事务T在读取数据R前必须先加S锁 读完后即释放S锁2级封锁协议可以防止丢失修改和读 脏 数据 在2级封锁协议中 由于读完数据后即释放S锁 所以它不能保证可重复读 不读 脏 数据 9 3 3封锁协议 88 2级封锁协议 不可重复读 9 3 3封锁协议 89 3级封锁协议 1级封锁协议 事务T在读取数据R之前必须先对其加S锁 直到事务结束才释放3级封锁协议可防止丢失修改 读脏数据和不可重复读 9 3 3封锁协议 90 不读 脏 数据 91 不可重复读 三级协议的主要区别 什么操作需要申请封锁何时释放锁 即持锁时间 9 3 3封锁协议 92 9 3 4活锁和死锁 封锁技术可以有效地解决并行操作的一致性问题 但也带来一些新的问题活锁死锁 93 1 活锁 由于多个事务都申请封锁了相同的数据对象 造成长期等待的现象 1 产生活锁的原因 9 3 4活锁和死锁 94 2 如何避免活锁 采用先来先服务的策略 当多个事务请求封锁同一数据对象时按请求封锁的先后次序对这些事务排队该数据对象上的锁一旦释放 首先批准申请队列中第一个事务获得锁 9 3 4活锁和死锁 95 2 死锁 T1T2 XlockR1 XlockR2等待等待等待 XlockR2 XlockR1等待等待 两个或多个事务都已封锁了一些数据对象 然后又都请求对已为其他事务封锁的数据对象加锁 从而出现死等待 1 产生死锁的原因 9 3 4活锁和死锁 96 2 死锁问题解决方法 预防死锁 破坏产生死锁的条件一次封锁法顺序封锁法死锁的诊断与解除允许死锁发生解除死锁由DBMS的并发控制子系统定期检测系统中是否存在死锁一旦检测到死锁 就要设法解除 9 3 4活锁和死锁 97 预防死锁 一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁一次封锁法存在的问题 降低并发度扩大封锁范围将以后要用到的全部数据加锁 势必扩大了封锁的范围 从而降低了系统的并发度难于事先精确确定封锁对象数据库中数据不断变化 很难事先精确地确定每个事务所要封锁的数据对象解决方法 将事务在执行过程中可能要封锁的数据对象全部加锁 但会进一步降低并发度 9 3 4活锁和死锁 98 顺序封锁法 顺序封锁法是预先对数据对象规定一个封锁顺序 所有事务都按此顺序实行封锁 顺序封锁法存在的问题维护成本高数据库系统中可封锁的数据对象极其众多 且随数据的插入 删除等操作而不断地变化 要维护这样极多而且变化的资源的封锁顺序非常困难 成本很高难于实现事务的封锁请求须随着事务的执行而动态地决定 很难事先确定每一个事务要封锁哪些对象 很难按规定的顺序去施加封锁 9 3 4活锁和死锁 99 死锁的诊断与解除 允许死锁发生解除死锁由DBMS的并发控制子系统定期检测系统中是否存在死锁一旦检测到死锁 就要设法解除 9 3 4活锁和死锁 100 检测死锁 超时法 如果一个事务的等待时间超过了规定的时限 就认为发生了死锁优点 实现简单缺点有可能误判死锁时限若设置得太长 死锁发生后不能及时发现解除死锁选择一个处理死锁代价最小的事务 将其撤消 释放此事务持有的所有的锁 使其它事务能继续运行下去 9 3 4活锁和死锁 101 1 什么样的并发操作调度是正确的计算机系统对并行事务中并行操作的调度是的随机的 而不同的调度可能会产生不同的结果 将所有事务串行起来的调度策略一定是正确的调度策略若一个事务运行时没有其他事务同时运行 即没有受到其他事务的干扰 那么就可以认为该事务的运行结果是正常的 或预想的以不同的顺序串行执行事务有可能会产生不同的结果 但由于不会将数据库置于不一致状态 所以可以认为是正确 9 3 5并发调度的可串行性 102 几个事务的并行执行是正确的 当且仅当其结果与按某一次序串行地执行它们时的结果相同 这种并行调度策略称为可串行化 Serializable 的调度 可串行性是并行事务正确性的唯一准则 2 可串行化 Serializable 的调度 9 3 5并发调度的可串行性 103 对这两个事务的不同调度策略串行执行串行调度策略1串行调度策略2交错执行不可串行化的调度可串行化的调度 例 现在有两个事务 分别包含下列操作 事务1 读B A B 1 写回A 事务2 读A B A 1 写回B 假设A的初值为2 B的初值为2 9 3 5并发调度的可串行性 104 SlockBY B 2UnlockBXlockAA Y 1写回A 3 UnlockA SlockAX A 3UnlockAXlockBB X 1写回B 4 UnlockB T1 T2 SlockBY B 3UnlockBXlockAA Y 1写回A 4 UnlockA SlockAX A 2UnlockAXlockBB X 1写回B 3 UnlockB T1 T2 a 串行调度策略1 b 串行调度策略2 9 3 5并发调度的可串行性 105 c 不可串行化的调度 SlockBY B 2UnlockBXlockAA Y 1写回A 3 UnlockA SlockAX A 2UnlockAXlockBB X 1写回B 3 UnlockB T1 T2 d 可串行化的调度 SlockBY B 2UnlockBXlockAA Y 1写回A 3 UnlockA SlockA等待等待等待X A 3UnlockAXlockBB X 1写回B 4 UnlockB T1 T2 9 3 5并发调度的可串行性 106 3 如何保证并发操作的调度是正确的 为了保证并行操作的正确性 DBMS的并行控制机制必须提供一定的手段来保证调度是可串行化的从理论上讲 在某一事务执行时禁止其他事务执行的调度策略一定是可串行化的调度 这也是最简单的调度策略 但这种方法实际上是不可行的 因为它使用户不能充分共享数据库资源 9 3 5并发调度的可串行性 107 1 保证并发操作调度正确性的方法封锁方法 两段锁 Two PhaseLocking 简称2PL 协议时标方法乐观方法 9 3 5并发调度的可串行性 108 9 3 6两段锁协议 1 两段锁协议的内容1 在对任何数据进行读 写操作之前 事务首先要获得对该数据的封锁2 在释放一个封锁之后 事务不再获得任何其他封锁 两段 锁的含义事务分为两个阶段第一阶段是获得封锁 也称为扩展阶段 第二阶段是释放封锁 也称为收缩阶段 109 例 事务1的封锁序列 SlockA SlockB XlockC UnlockB UnlockA UnlockC 事务2的封锁序列 SlockA UnlockA SlockB XlockC UnlockC UnlockB 事务1遵守两段锁协议 而事务2不遵守两段协议 9 3 6两段锁协议 110 并行执行的所有事务均遵守两段锁协议 则对这些事务的所有并行调度
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年安徽医学高等专科学校单招职业技能测试必刷测试卷带答案解析
- 2026年山东华宇工学院单招职业倾向性测试必刷测试卷及答案解析(名师系列)
- 2026年安徽省淮北市单招职业适应性考试必刷测试卷带答案解析
- 2026年内蒙古能源职业学院单招综合素质考试题库及答案解析(名师系列)
- 2026年三亚航空旅游职业学院单招综合素质考试必刷测试卷附答案解析
- 2026年云南外事外语职业学院单招职业倾向性测试题库附答案解析
- 高中生通过GIS技术研究明代琼州海峡漕运路线台风影响课题报告教学研究课题报告
- 2026年上海立信会计金融学院单招综合素质考试题库及答案解析(夺冠系列)
- 2026年宁夏工商职业技术学院单招职业倾向性测试必刷测试卷附答案解析
- 2026年河北轨道运输职业技术学院单招职业技能测试必刷测试卷及答案解析(夺冠系列)
- 2023年福建高职单招语文真题试卷-(含参考答案)
- 船舶保安职责-保安意识考试题库(含答案)
- 特教概论知识点
- 红山窑中学残疾儿童送教上门教案
- 感染组:乙肝基因分型和乙肝耐药检测-课件
- 人教版新教材高中英语选择性必修一全册课文及翻译(中英word)
- 心脏结构和功能
- J-STD-020D[1].1中文版
- 饼干工艺流程图及说明参考范本
- 提高预制T梁预应力张拉一次合格率-QC小组总结
- (完整word版)监理优秀员工先进事迹材料
评论
0/150
提交评论