已阅读5页,还剩79页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章数据库安全保护 2020 2 14 北京林业大学软件教研室 2 5 1数据库的安全性5 2完整性控制5 3并发控制与封锁5 4数据库的恢复 2020 2 14 北京林业大学软件教研室 3 5 1数据库的安全性 5 1 1数据库安全性的含义数据库的安全性是指保护数据库以防止非法使用所造成的数据泄露 更改或破坏 安全性问题有许多方面 1 法律 社会和伦理方面时问题 2 物理控制方面的问题 3 政策方面的问题 4 运行方面的问题 5 硬件控制方面的问题 6 操作系统安全性方面的问题 7 数据库系统本身的安全性方面的问题 2020 2 14 北京林业大学软件教研室 4 5 1 2安全性控制的一般方法 安全性控制是指要尽可能地杜绝所有可能的数据库非法访问 图5 1安全控制模型 2020 2 14 北京林业大学软件教研室 5 安全性控制的一般方法用户标识和鉴定用户存取权限控制定义视图数据加密审计 Audit 2020 2 14 北京林业大学软件教研室 6 用户标识和鉴定用户标识和鉴定是由系统提供一定的方式让用户标识自己的名字或身份 系统内部记录着所有合法用户的标识 每次用户要求进入系统时 由系统进行核实 通过鉴定后才提供机器的使用权 用户标识和鉴定的方法用一个用户名或用户标识符来标明用户的身份 系统以此来鉴别用户的合法性 用户标识符是用户公开的标识 它不足以成为鉴别用户身份的凭证 通过用户名和口令来鉴定用户的方法简单易行 但该方法在使用时 由于用户名和口令的产生和使用比较简单 也容易被窃取 因此还可采用更复杂的方法 2020 2 14 北京林业大学软件教研室 7 授权表 用户标识 数据对象 操作类型 用户存取权限控制用户存取权限指的是不同的用户对于不同的数据对象允许执行的操作权限 在数据库系统中 定义用户存取权限称为授权 这些授权定义经过编译后以一张授权表的形式存放在数据字典中 2020 2 14 北京林业大学软件教研室 8 关系系统中的存取权限 2020 2 14 北京林业大学软件教研室 9 对于授权表 一个衡量授权机制的重要指标就是授权粒度 即可以定义的数据对象的范围 在关系数据库中 授权粒度包括关系 记录或属性 授权粒度越细 授权子系统就越灵活 能够提供的安全性就越完善 2020 2 14 北京林业大学软件教研室 10 数据加密加密的基本思想是根据一定的算法将原始数据 明文 加密成为不可直接识别的格式 数据以密文的形式存储和传输 加密方法 替换方法 该方法使用密钥将明文中的每一个字符转换为密文中的字符 转换方法 该方法将明文中的字符按不同的顺序重新排列 通常将这两种方法结合起来使用 就可以达到相当高的安全程度 2020 2 14 北京林业大学软件教研室 11 审计审计功能是一种监视措施 它跟踪记录有关数据的访问活动 审计追踪把用户对数据库的所有操作自动记录下来 存放在一个特殊文件中 即审计日志中 记录的内容一般包括 操作类型 如修改 查询等 操作终端标识与操作者标识 操作日期和时间 操作所涉及到的相关数据 如基本表 视图 记录 属性等 数据的前象和后象等 2020 2 14 北京林业大学软件教研室 12 5 1 3SQLServer2000的数据安全性机制 为了实现安全性 SQLServer2000对用户的访问进行两个阶段的检验 身份验证阶段 Authentication 身份验证机制决定了用户能否连接 或登录 到SQLServer2000服务器 权限许可确认阶段 PermissionValidation 权限许可机制决定了经过了身份验证后的用户连接到SQLServer2000服务器可以执行的具体操作 包括服务器上的操作和具体的数据库上的操作 2020 2 14 北京林业大学软件教研室 13 5 1 4SQLServer2000的身份验证模式 Windows身份验证模式在该验证模式下 SQLServer2000使用Windows操作系统来对登录的账号进行身份验证 支持Windows操作系统的密码策略和锁写策略 账号和密码保存在Windows操作系统的账户数据库中 Windows验证模式下主要有以下优点 1 数据库管理员的工作可以集中在管理数据库方面 而不是管理用户账户 2 Windows有着更强的用户账户管理工具 可以设置账户锁定 密码期限等 3 Windows的组策略支持多个用户同时被授权访问SQLServer 如果网络中有多个SQLServer服务器 就可以选择通过Windows身份验证机制来完成 2020 2 14 北京林业大学软件教研室 14 TCP IPSockets 命名管道 SQLServer身份验证模式 Windows身份验证模式 混合身份验证模式混合身份验证模式允许以SQLServer身份验证模式或者Windows身份验证模式来进行验证 混合验证模式具有以下优点 1 创建了Windows之上的另外一个安全层次 2 支持更大范围的用户 如非Windows客户 Novell网用户等 3 一个应用程序可以使用单个的SQLServer登录账号和口令 2020 2 14 北京林业大学软件教研室 15 5 1 5SQLServer的登录账号和服务器角色 在SQLServer中 账号有两种 一种是登录服务器的登录账号 LoginName 另外一种是使用数据库的用户账号 UserName 查看服务器的登录账号使用EnterpriseManager进入EnterpriseManager 展开 SQLServer组 找到所要连接的SQLServer服务器 展开该服务器对应的文件夹 再展开 安全性 文件夹 单击 登录 选项 即可看到系统创建的默认登录账号及已建立的其他登录账号 使用存储过程EXECsp helplogins 2020 2 14 北京林业大学软件教研室 16 创建服务器的登录账号利用EnterpriseManage利用存储过程EXECsp addlogin 登录账号名称 密码 默认数据库名 使用的语言 例5 1 建立了一个名称为Mike的登录账号 EXECsp addlogin Mike m1934 Teach NULL 例5 2 将Mike的登录账号加入到数据库Teach中 EXECsp adduser Mike 更改登录账号的属性使用存储过程sp password可改变登录账号的密码EXECsp password 旧密码 新密码 登录账号名称 使用存储过程sp addsrvrolemember可以将登录账号加入服务器的角色中EXECsp addsrvrolemember 登录账号 服务器角色名称 2020 2 14 北京林业大学软件教研室 17 删除登录账号使用EnterpriseManager使用存储过程sp droplogin 登录账号 SQLServer的服务器角色角色 Role 是对权限集中管理的一种机制 将不同的权限组合在一起就形成了一种角色 服务器角色是执行服务器级管理操作的用户权限的集合 服务器角色是SQLSERVER系统内置的 DBA不能创建服务器角色 只能将其他角色或用户添加到服务器角色中 默认的服务器角色列表 参见P188 注 属于WindowsAdministrators组的帐号自动被设置为sysadmin服务器角色 2020 2 14 北京林业大学软件教研室 18 5 1 6SQLServer的数据库用户账号和数据库角色 数据库的用户账号用户账号要在特定的数据库内创建 并关联一个登录账号 当一个数据库的用户创建时 必须关联一个登录账号 每个登录账号在一个数据库中只能有一个用户账号 但每个登录账号可以在不同的数据库中各有一个用户账号 注意 master和tempdb数据库中的guest用户账号不能删除 而其他数据库中的guest用户账号可以删除 登录账号具有对某个数据库的访问权限 并不表示该登录账号对该数据库具有存取的权限 2020 2 14 北京林业大学软件教研室 19 查看数据库的用户账号利用存储过程EXECsp helpuser创建数据库的用户账号使用存储过程sp adduser 登录账号 用户账号 所属的数据库角色 设置数据库用户账号的权限对数据库对象的操作 具体含义如下SELECT 对表或者视图进行查询 INSERT 在表或者视图中插入记录 UPDATE 对表或者视图中的数据进行修改 DELETE 删除表或者视图中的数据 EXEC 执行存储过程 DRI 可对表的外键加以限制 以完成表的参照完整性 2020 2 14 北京林业大学软件教研室 20 删除数据库用户账号存储过程sp dropuser 用户账号 数据库角色数据库角色是对数据库对象操作的权限的集合 数据库角色可分为两种 固定的标准数据库角色 系统创建的 应用程序角色当我们打算让某些用户只能通过特定的应用程序间接地存取数据库中的数据而不是直接地存取数据库数据时 就应该考虑使用应用程序角色 2020 2 14 北京林业大学软件教研室 21 2020 2 14 北京林业大学软件教研室 22 创建新的数据库角色sp addrole 角色名 拥有者 删除数据库角色sp droprole 角色名 创建数据库应用程序角色sp addapprole 应用程序角色名 密码 用户和角色的权限问题用户权限继承角色的权限用户分属不同角色 2020 2 14 北京林业大学软件教研室 23 5 2完整性控制 5 2 1数据库完整性的含义数据库的完整性是指保护数据库中数据的正确性 有效性和相容性 防止错误的数据进入数据库造成无效操作 数据库的完整性是指防止合法用户使用数据库时向数据库中加入不符合语义的数据 完整性措施的防范对象是不合语义的数据 2020 2 14 北京林业大学软件教研室 24 5 2 2完整性规则的组成 完整性规则主要由以下三部分构成 1 触发条件 规定系统什么时候使用规则来检查数据 2 约束条件 规定系统检查用户发出的操作请求违背了什么样的完整性约束条件 3 违约响应 规定系统如果发现用户发出的操作请求违背了完整性约束条件 应该采取一定的动作来保证数据的完整性 即违约时要做的事情 2020 2 14 北京林业大学软件教研室 25 完整性规则从执行时间上可分为立即执行约束 ImmediateConstraints 和延迟执行约束 DeferredConstrainsts 立即执行约束是指在执行用户事务过程中 某一条语句执行完成后 系统立即对此数据进行完整性约束条件检查 延迟执行约束是指在整个事务执行结束后 再对约束条件进行完整性检查 结果正确后才能提交 某一条语句执行完成后 系统立即对此数据进行完整性约束条件检查 2020 2 14 北京林业大学软件教研室 26 一条完整性规则可以用一个五元组 D O A C P 来形式化地表示D Data 代表约束作用的数据对象 可以是关系 元组和列三种对象 O Operation 代表触发完整性检查的数据库操作 即当用户发出什么操作请求时需要检查该完整性规则 是立即执行还是延迟执行 A Assertion 代表数据对象必须满足的语义约束 这是规则的主体 C Condition 代表选择A作用的数据对象值的谓词 P Procedure 代表违反完整性规则时触发执行的操作过程 2020 2 14 北京林业大学软件教研室 27 完整性约束条件是完整性控制机制的核心 例如 对于 学号 SNo 不能为空 的这条完整性约束中 D O A C P的含义分别如下 D 代表约束作用的数据对象为SNo属性 O 当用户插入或修改数据时需要检查该完整性规则 A SNo不能为空 C A可作用于所有记录的SNo属性 P 拒绝执行用户请求 2020 2 14 北京林业大学软件教研室 28 关系模型的完整性包括实体完整性 参照完整性和用户定义完整性 对于违反实体完整性和用户定义完整性规则的操作一般都是采用拒绝执行的方式进行处理 而对于违反参照完整性的操作 并不都是简单的拒绝执行 一般在接受这个操作的同时 执行一些附加的操作 以保证数据库的状态仍然是正确的 例如在删除被参照关系中的元组时 应该将参照关系中所有的外码值与被参照关系中要删除元组主码值相对应的元组一起删除 比如 要删除S关系中SNO S1 的元组 而SC关系中又有两个SNO S1 的元组 这时根据应用环境的语义 因为当一个学生毕业或退学后 他的个人记录从S关系中删除 选课记录也应随之从SC表中删除 所以应该将SC关系中两个SNO S1 的元组一起删除 2020 2 14 北京林业大学软件教研室 29 5 2 3完整性约束条件的分类5 2 3 1从约束条件使用的对象分为值的约束和结构的约束1 值的约束 即对数据类型 数据格式 取值范围等进行规定 1 对数据类型的约束 包括数据的类型 长度 单位和精度等 例如 规定学生姓名的数据类型应为字符型 长度为8 2 对数据格式的约束 例如 规定出生日期的数据格式为YY MM DD 3 对取值范围的约束 例如 月份的取值范围为1 12 日期1 31 4 对空值的约束 空值表示未定义或未知的值 它与零值和空格不同 有的列值允许空值 有的则不允许 例如 学号和课程号不可以为空值 但成绩可以为空值 2020 2 14 北京林业大学软件教研室 30 2 结构约束 即对数据之间联系的约束 数据库中同一关系的不同属性之间 应满足一定的约束条件 同时 不同关系的属性之间也有联系 也应满足一定的约束条件 常见的结构约束有如下四种 1 函数依赖约束 说明了同一关系中不同属性之间应满足的约束条件 如 2NF 3NF BCNF这些不同的范式应满足不同的约束条件 大部分函数依赖约束都是隐含在关系模式结构中的 特别是对于规范化程度较高的关系模式 都是由模式来保持函数依赖的 2020 2 14 北京林业大学软件教研室 31 2 实体完整性约束 说明了关系键的属性列必须唯一 其值不能为空或部分为空 3 参照完整性约束 说明了不同关系的属性之间的约束条件 即外部键的值应能够在参照关系的主键值中找到或取空值 4 统计约束 规定某个属性值与一个关系多个元组的统计值之间必须满足某种约束条件 例如 规定系主任的奖金不得高于该系的平均奖金的40 不得低于该系的平均奖金的20 这里该系平均奖金的值就是一个统计计算值 其中 实体完整性约束和参照完整性约束是关系模型的两个极其重要的约束 被称为关系的两个不变性 统计约束实现起来开销很大 2020 2 14 北京林业大学软件教研室 32 5 2 3 2从约束对象的状态分为静态约束和动态约束1 静态约束静态约束是指对数据库每一个确定状态所应满足的约束条件 是反映数据库状态合理性的约束 这是最重要的一类完整性约束 上面介绍的值的约束和结构的约束均属于静态约束 2 动态约束动态约束是指数据库从一种状态转变为另一种状态时 新旧值之间所应满足的约束条件 动态约束反映的是数据库状态变迁的约束 例如 学生年龄在更改时只能增长 职工工资在调整时不得低于其原来的工资 2020 2 14 北京林业大学软件教研室 33 5 2 4数据完整性的实施 声明式数据完整性声明式数据完整性是将数据所需符合的条件融入到对象的定义中 这样SQLServer会自动确保数据符合事先制定的条件 声明式数据完整性的特点是 通过针对表和字段定义声明的约束 可使声明式数据完整性成为数据定义的一部分 使用约束 默认值与规则实施声明式数据完整性 2020 2 14 北京林业大学软件教研室 34 程序化数据完整性如果所需符合的条件以及该条件的实施均通过所编写的程序代码完成 则这种形式的数据完整性称为程序化数据完整性 程序化数据完整性的特点是 程序化数据完整性可以通过相关的程序语言及工具在客户端或服务器端实施 SQLServer可以使用存储过程或触发器实施程序化数据完整性 综上所述 实施数据完整性的方法有5种 约束 Constraint 默认值 Default 规则 Rule 存储过程 StoredProcedure 触发器 Trigger 2020 2 14 北京林业大学软件教研室 35 5 2 5规则 规则 Rule 就是数据库对存储在表中的列或用户自定义数据类型中的值的规定和限制 规则是单独存储的独立的数据库对象 规则与其作用的表或用户自定义数据类型是相互独立的 即表或用户自定义对象的删除 修改不会对与之相连的规则产生影响 规则和约束可以同时使用 表的列可以有一个规则和多个CHECK约束 规则与CHECK约束很相似 在ALTERTABLE和CREATETABLE命令中使用的CHECK约束是更标准的限制列值的方法 但CHECK约束不能直接作用于自定义数据类型 2020 2 14 北京林业大学软件教研室 36 创建规则CREATERULErule nameAScondition expression 例5 12 创建学生年龄规则 CREATERULEage ruleAS age 18and age 50查看规则用存储过程sp helptext查看规则sp helptext objname name 其中 objname name 字句指明对象的名称 用sp helptext存储过程查看的对象可以是当前数据库中的规则 默认 触发器 视图 或未加密的存储过程 例5 13 用存储过程sp helptext查看名称为 age rule 的规则内容 EXECsp helptext age rule condition expression中的表达式必须以字符 开头 2020 2 14 北京林业大学软件教研室 37 规则的绑定与松绑创建规则后 规则仅仅是一个存在于数据库中的对象 并未发生作用 需要将规则与数据库表或用户自定义对象联系起来 才能达到创建规则的目的 所谓绑定就是指定规则作用于哪个表的哪一列或哪个用户自定义数据类型 解除规则与对象的绑定称为 松绑 2020 2 14 北京林业大学软件教研室 38 用存储过程sp bindrule绑定规则sp bindrule rulename rule objname object name futureonly 注 futureonly 选项仅在绑定规则到用户自定义数据类型上时才可以使用 例5 14 绑定规则age rule到S表的字段Age EXECsp bindrule age rule S Age 规则对已经输入表中的数据不起作用 规则所指定的数据类型必须与所绑定的对象的数据类型一致 且规则不能绑定在一个数据类型为TEXT IMAGE或TIMESTAMP的列 可以直接用一个新的规则来绑定列或用户自定义数据类型 而不需要先将其原来绑定的规则解除 系统会自动将旧规则覆盖 用存储过程sp unbindrule解除规则的绑定sp unbindrule objname object name futureonly 例5 15 解除已绑定到S表的字段Age的规则age rule EXECsp unbindrule S Age 2020 2 14 北京林业大学软件教研室 39 在删除一个规则前必须先将与其绑定的对象解除绑定 删除规则使用DROPRULE命令删除规则DROPRULE rule name n 例5 16 删除age rule规则 DROPRULEage rule 2020 2 14 北京林业大学软件教研室 40 5 2 6默认 默认 Default 是向用户输入记录时没有指定具体数据的列中自动插入的数据 此处的默认对象与用ALTERTABLE或CREATETABLE命令操作表时使用DEFAULT选项指定的默认功能相似 但默认对象可以用于多个列或用户自定义数据类型 他的管理与应用规则有许多相似之处 表的一列或一个用户自定义数据类型只能与一个默认绑定 创建默认CREATEDEFAULTdefault nameASconstant expression 例5 17 创建出生日期默认birthday defa CREATEDEFAULTbirthday defaAS 1978 1 1 2020 2 14 北京林业大学软件教研室 41 查看和修改默认使用sp helptext存储过程可以查看默认的信息 例5 18 查看默认birthday defa EXECsp helptextbirthday defa默认的绑定与松绑用存储过程sp bindefault绑定默认sp bindefault defname default objname object name futureonly 用存储过程sp unbindefault解除默认的绑定sp unbindefault objname object name futureonly 2020 2 14 北京林业大学软件教研室 42 例5 19 绑定默认birthday defa到数据表S的Birthday列上 EXECsp bindefaultbirthday defa S Birthday 例5 20 解除默认birthday defa与表S的Birthday列的绑定 EXECsp unbindefault S Birthday 删除默认使用DROPRULE命令删除默认DROPDEFAULT default name n 例5 21 删除学生生日默认birthday defa DROPDEFAULTbirthday defa 在删除一个默认前必须先将与其绑定的对象解除绑定 2020 2 14 北京林业大学软件教研室 43 5 3并发控制与封锁 5 3 1数据库并发性的含义为了充分利用数据库资源 很多时候数据库用户都是对数据库系统并行存取数据 这样就会发生多个用户并发存取同一数据块的情况 如果对并发操作不加控制可能会产生不正确的数据 破坏数据的完整性 并发控制就是解决这类问题 以保持数据库中数据的一致性 即在任何一个时刻数据库都将以相同的形式给用户提供数据 2020 2 14 北京林业大学软件教研室 44 事务是数据库系统中执行的一个工作单位 它是由用户定义的一组操作序列 一个事务可以是一组SQL语句 一条SQL语句或整个程序 一个应用程序可以包括多个事务 定义事务的语句有三条 BEGINTRANSACTIONCOMMITROLLBACK 5 3 2事务 Transaction 事务的开始 事务的提交 事务的回滚 2020 2 14 北京林业大学软件教研室 45 事务的特征原子性 Atomicity 一个事务是一个不可分割的工作单位 事务在执行时 应该遵守 要么不做 要么全做 NothingorAll 的原则 即不允许完成部分的事务 一致性 Consistency 事务对数据库的作用是数据库从一个一致状态转变到另一个一致状态 所谓数据库的一致状态是指数据库中的数据满足完整性约束 P204银行的例子隔离性 Isolation 如果多个事务并发地执行 应像各个事务独立执行一样 一个事务的执行不能被其他事务干扰 持久性 Durability 持久性指一个事务一旦提交 它对数据库中数据的改变就应该是持久的 即使数据库因故障而受到破坏 DBMS也应该能够恢复 ACID特性 2020 2 14 北京林业大学软件教研室 46 事务上述四个性质的英文术语的第一个字母为ACID 因此 这四个性质以称为事务的ACID准则 下面是一个事务的例子 从帐号A转移资金额R到帐号B BEGINTRANSACTIONREADAA A RIFA 0 A款不足 THENBEGINDISPLAY A款不足 ROLLBACKENDELSE 拨款 BEGINB B RDISPLAY 拨款完成 COMMITEND 2020 2 14 北京林业大学软件教研室 47 这是对一个简单事务的完整的描述 该事务有两个出口 当A帐号的款项不足时 事务以ROLLBACK 撤销 命令结束 即撤销该事务的影响 另一个出口是以COMMIT 提交 命令结束 完成从帐号A到帐号B的拨款 在COMMIT之前 即在数据库修改过程中 数据可能是不一致的 事务本身也可能被撤销 只有在COMMIT之后 事务对数据库所产生的变化才对其他事务开放 这就可以避免其他事务访问不一致或不存在的数据 2020 2 14 北京林业大学软件教研室 48 并发控制机制的提出 当多个用户并发地存取数据库时可能出现多个事务同时存取同一数据的情况 并发控制机制将对这些并发操作加以控制以保证每个事务的ACID特性 确保数据库的一致性并发控制机制是衡量某DBMS系统性能的指标之一 2020 2 14 北京林业大学软件教研室 49 并发控制概述 这种数据库的不一致是由并发操作引起的 机票数量A A 16 A 15 A 15 售票点 售票点 A 16 A 16 出售1 出售1 事务T1 事务T2 2020 2 14 北京林业大学软件教研室 50 并发操作引起的丢失修改 并发操作引起的数据不一致性包括三类丢失修改不可重复读读脏数据丢失修改事务T1对数据的修改被事务T2的修改覆盖 2020 2 14 北京林业大学软件教研室 51 并发操作引起的不可重复读 不可重复读事务T1读取某一数据后 事务T2对其做了修改 当T1按同样条件再读时得到不同的值事务T1读取某些数据后 事务T2删除 或插入 了一些记录 当T1按同样条件再读时发现少 或多 了一些记录 T1读A 1 B 2求A B 3读A 1 B 4求A B 5 T2读B 2B B 2写回B 4 2020 2 14 北京林业大学软件教研室 52 并发操作引起的读脏数据 读脏数据事务T1修改了某数据并写回磁盘 事务T2读取了同一数据后 T1由于某种原因被撤销 被修改的值复原 此时T2读到的数据与数据库中的数据不一致 T1读C 1C C 2写回C 2ROLLBACKC恢复为1 T2读C 2 2020 2 14 北京林业大学软件教研室 53 小结 产生上述三类不一致性的主要原因并发操作破坏了事务的隔离性 事务间相互干扰并发控制的主要技术封锁技术 Locking 时间戳技术 Timestamp 其他 2020 2 14 北京林业大学软件教研室 54 5 3 4封锁 概念事务T在对某个数据对象 如数据库 表 记录等 操作之前 首先向系统发出加锁请求以便获得对数据对象相应的控制在事务T释放它所获得的锁之前 其他事务不能更新此数据对象 可以读此数据对象 2020 2 14 北京林业大学软件教研室 55 锁的类型 排它锁 eXclusivelock 写锁若事务T对数据对象A加上X锁 则允许T读取和修改A 其它任何事务都不能再对A加任何类型的锁 直到T释放A上的锁共享锁 Sharelock 读锁若事务T对数据对象A加上S锁 则事务T可以读A但不能修改A 其它事务只能再对A加S锁 而不能加X锁 直到T释放A上的S锁 2020 2 14 北京林业大学软件教研室 56 锁的相容矩阵 Y 相容的请求N 不相容的请求 2020 2 14 北京林业大学软件教研室 57 封锁协议 有了两种基本封锁 还需要什么约定 封锁协议的概念何时申请加锁 持锁时间 何时释放等规则不同的封锁协议所达到的系统一致性不同 2020 2 14 北京林业大学软件教研室 58 三个级别的封锁协议 一级封锁协议内容 事务T在修改数据R之前必须先对其加X锁 直至事务结束事务结束包括正常结束 COMMIT 和非正常结束 ROLLBACK 评价 是否可解决丢失修改 可重复读 读脏数据 可防止 不能保证 不能防止 2020 2 14 北京林业大学软件教研室 59 1级封锁协议 没有丢失修改 2020 2 14 北京林业大学软件教研室 60 1级封锁协议 读 脏 数据 2020 2 14 北京林业大学软件教研室 61 1级封锁协议 不可重复读 2020 2 14 北京林业大学软件教研室 62 三个级别的封锁协议 二级封锁协议内容 1级封锁协议 事务T在读取数据R前必须先加S锁 读完后即可释放S锁读数据前加S锁 读完即释放写数据前加X锁直至事务结束评价 是否可解决丢失修改 可重复读 读脏数据 可防止 不能保证 可防止 2020 2 14 北京林业大学软件教研室 63 2级封锁协议 不可重复读 2020 2 14 北京林业大学软件教研室 64 三个级别的封锁协议 三级封锁协议1级封锁协议 事务T在读取数据R之前必须先对其加S锁 直到事务结束才释放读数据前加S锁直至事务结束写数据前加X锁直至事务结束评价 是否可解决丢失修改 可重复读 读脏数据 可防止 能保证 可保证 2020 2 14 北京林业大学软件教研室 65 3级封锁协议 可重复读 2020 2 14 北京林业大学软件教研室 66 小结用封锁协议解决问题 用什么封锁协议解决以下问题 丢失修改 读脏数据 不能重复读 一级封锁 二级封锁 三级封锁 2020 2 14 北京林业大学软件教研室 67 不同级别的封锁协议 2020 2 14 北京林业大学软件教研室 68 封锁粒度 LockGranularity 封锁粒度指封锁的单位 根据对数据的不同处理 封锁的对象可以是这样一些逻辑单元 字段 记录 表 数据库等 封锁的数据对象的大小叫封锁粒度 封锁粒度越小 系统中能够被封锁的对象就越多 并发度越高 但封锁机构复杂 系统开销也就越大 封锁粒度越大 系统中能够被封锁的对象就越少 并发度越低 封锁机构越简单 相应系统开销也就越小 2020 2 14 北京林业大学软件教研室 69 活锁和死锁问题 2020 2 14 北京林业大学软件教研室 70 活锁举例说明 事务T1封锁某数据后 事务T2请求封锁未获得并等待 而T1释放锁后 事务T3请求封锁并获得 T3释放锁后 事务T4请求封锁并获得 T2可能永远等待解决办法 采用先来先服务的策略 2020 2 14 北京林业大学软件教研室 71 T1T2 XlockR1 XlockR2等待等待等待 XlockR2 XlockR1等待等待 2020 2 14 北京林业大学软件教研室 72 死锁问题 死锁举例说明 事务T1和T2各自封锁了数据R1和R2后 又各自请求封锁R2和R1 因都无法获得而等待对方释放的现象解决的两类方法预防死锁允许发生死锁 采用一定手段定期诊断并解除死锁 2020 2 14 北京林业大学软件教研室 73 死锁的预防 一次封锁法办法 每个事务一次将所有要使用的数据全部加锁存在问题 顺序封锁法办法 预先规定数据对象的封锁顺序 所有事务均按此顺序存在问题 在操作系统上广为采用的预防死锁的策略并不很适合数据库的特点因此DBMS普遍采用诊断并解除死锁的办法 2020 2 14 北京林业大学软件教研室 74 1 一次封锁法 一次封锁法存在的问题 降低并发度扩大封锁范围将以后要用到的全部数据加锁 势必扩大了封锁的范围 从而降低了系统的并发度 2020 2 14 北京林业大学软件教研室 75 一次封锁法 续 难于事先精确确定封锁对象数据库中数据是不断变化的 原来不要求封锁的数据 在执行过程中可能会变成封锁对象 所以很难事先精确地确定每个事务所要封锁的数据对象解决方法 将事务在执行过程中可能要封锁的数据对象全部加锁 这就进一步降低了并发度 2020 2 14 北京林业大学软件教研室 76 2 顺序封锁法 顺序封锁法存在的问题维护成本高数据库系统中可封锁的数据对象极其众多 并且随数据的插入 删除等操作而不断地变化 要维护这样极多而且变化的资源的封锁顺序非常困难 成本很高 2020 2 14 北京林业大学软件教研室 77 顺序封锁法 续 难于实现事务的封锁请求可以随着事务的执行而动态地决定 很难事先确定每一个事务要封锁哪些对象 因此也就很难按规定的顺序去施加封锁 例 规定数据对象的封锁顺序为A B C D E 事务T3起初要求封锁数据对象B C E 但当它封锁了B C后 才发现还需要封锁A 这样就破坏了封锁顺序 2020 2 14 北京林业大学软件教研室 78 数据R T1 T2 事务依赖图 死锁的诊断与解除如果在事务依赖图中沿着箭头方向存在一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年山东泰山技师学院单招综合素质考试题库含答案详解(综合题)
- 2027年湘安职业学院高职单招职业技能考试模拟试卷(考点提分)附答案详解
- 2027年乐山岷江文旅职业学院单招综合素质考试题库【真题汇编】附答案详解
- 2027年山东省枣庄市高职单招职业技能考试模拟试卷含答案详解(综合卷)
- 2027年湖南有色金属职院单招职业技能考试模拟试卷(易错题)附答案详解
- 2027年大连职业技术学院高职单招职业技能考试模拟试卷附参考答案详解【培优】
- 2027年重庆市重庆市高职单招职业技能考试题库加答案详解
- 2025年山东蒙阴职业学院高职单招职业技能考试模拟试卷及完整答案详解(夺冠系列)
- 2024年南阳医学高专高职单招职业技能考试题库附答案详解【预热题】
- 2026年山东明湖职业学院高职单招职业技能考试题库(满分必刷)附答案详解
- 登高作业安全培训知识课件
- 失智老年人照护课件
- 2025-2030中国智能交通人才需求变化与培养体系构建报告
- 商混站安全操作规程
- 安全事故应急救援与调查处理的规定
- 智能机器人装备产业十五五发展规划(2026-2030年)
- 有创呼吸机试题及答案
- 结核病防治知识竞赛考试题库300题(含答案)
- 重症急性胰腺炎ICU治疗课件
- GB 45184-2024眼视光产品元件安全技术规范
- 全髋关节置换术后护理常规
评论
0/150
提交评论