您好、欢迎来到现金彩票网!
当前位置:彩运网 > 封锁粒度 >

数据库原理及应用第11章-并发控制(2学时)教材ppt

发布时间:2019-05-11 14:10 来源:未知 编辑:admin

  1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

  * * * * * * * * * * * * * * * * * * * * * * * * * * 1. 封锁粒度 (1)什么是封锁粒度 封锁的对象:逻辑单元,物理单元 逻辑单元: 属性值集合、元组、关系、索引项、数据库 物理单元:页(数据页或索引页)、物理记录等 封锁对象可大可小 封锁对象的大小称为封锁的粒度 一个系统同时支持多种封锁粒度 (2)选择封锁粒度的原则 权衡:系统开销←→并发度 封锁的粒度越 大 系统被封锁的对象 少 并发度 小 系统开销 小 小 多 高 大 封锁粒度与并发度、系统开销成反比 一般原则: 处理多个关系的大量元组:数据库 处理大量元组:关系 只处理少量元组:元组 2. 多粒度封锁 (1)多粒度树 以树形结构来表示多级封锁粒度,根结点是整个数据库,表示最大的数据粒度,叶结点表示最小的数据粒度。 数据库 关系Rn 关系R1 元组 元组 元组 元组 …… …… …… (2)多粒度封锁协议 允许每个结点独立地加锁 结点的后裔结点加同样类型的锁 显式封锁: 直接加锁 隐式封锁: 继承加锁 效果相同 (3)加锁检查 数据对象:显式封锁冲突 上级结点:隐式封锁冲突 下级结点:显式封锁冲突 3. 意向锁 意向锁目的:提高加锁时的检查效率 什么是意向锁 对结点加锁时先对它的上层结点加意向锁,申明该结点的下层结点正在被加锁。 例:对元组 r 加锁,先关系R加意向锁。 只检查数据库和R是否已加了不相容的锁 不需要检查R中的每一个元组是否加了X锁 意向共享锁(Intent Share Lock,IS锁) 意向排它锁(Intent Exclusive Lock,IX锁) 共享意向排它锁(Share Intent Exclusive Lock,SIX锁) 意向共享锁(IS锁) 如果对一个数据对象加IS锁,表示它的后裔结点拟(意向)加S锁。? 例:要对某个元组加S锁,则要首先对关系和数据库加IS锁 意向排它锁(IX锁) 如果对一个数据对象加IX锁,表示它的后裔结点拟(意向)加X锁。 例:要对某个元组加X锁,则要首先对关系和数据库加IX锁。 共享意向排它锁(SIX锁) 如果对一个数据对象加SIX锁,表示对它加S锁,再加IX锁,即SIX = S + IX。 例:对某个表加SIX锁,则表示该事务要读整个表(所以要对该表加S锁),同时会更新个别元组(所以要对该表加IX锁)。 T1 T2 S X IS IX SIX - S Y N Y N N Y X N N N N N Y IS Y N Y Y Y Y IX N N Y Y N Y SIX N N Y N N Y - Y Y Y Y Y Y 意向锁的相容矩阵 (3)锁的强度 锁的强度是指它对其他锁的排斥程度 申请封锁时以强锁代替弱锁是安全的,反之不然 SIX X S IX IS 意向锁封锁方法 申请封锁:自上而下 释放封锁:自下而上 结课论文 要求: 有封面、目录、摘要、关键词(黑格纸) 查阅资料(3篇,作为参考文献注明) 严禁抄袭,一经发现,0分处理 与笔记一起于6月3日交齐 数据库技术的发展和应用 数据库在工程管理中的应用 大数据背景下数据库技术面临的挑战 我认识的数据库 生活中的数据库技术 * * * * * * * * * * * * * * * * * * 第十一章 并发控制 1. 串行执行 2. 交叉并发 3. 同时并发 事务并发执行带来的问题 存取不正确的数据 破坏事务的隔离性和数据库的一致性 多事务运行 :不能充分利用资源 :减少处理机的空闲,提高效率 :最理想的方式,但受制于硬件环境 一、 概述 二、 封锁 三、 封锁协议 四、 活锁和死锁 五 、 两段锁协议 六 、 封锁的粒度 丢失修改 不可重复读 读“脏”数据 T1 T2 ① 读A ②? ③ A←A-1、写回A=15 ?④ 读A=16 ?? A←A-3、写回A=13 丢失修改 T1 T2 ① 读A=50、B=100 求和=150 ② ? ? ③ 读A=50、B=200 求和=250 (验算不对) 读B=100 B←B*2 写回B=200 不可重复读 三类不可重复读 事务1读取某一数据后: 事务2对其做了修改 事务2删除了部分记录 事务2插入了一些记录 幻影现象(phantom row) T1 T2 ① 读C=100 C←C*2 写回C ② ? ③ ROLLBACK C恢复为100 读C=200 读“脏”数据 一、 概述 二、 封锁 三、 封锁协议 四、 活锁和死锁 五 、 两段锁协议 六 、 封锁的粒度 什么是封锁? 封锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁;加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。 封锁是实现并发控制的一个非常重要的技术。 封锁类型 排它锁(eXclusive lock,X锁、写锁) 共享锁(Share lock,S锁、读锁) X S - X N N Y S N Y Y - Y Y Y 一、 概述 二、 封锁 三、 封锁协议 四、 活锁和死锁 五 、 两段锁协议 六 、 封锁的粒度 1级封锁协议 2级封锁协议 3级封锁协议 T1 T2 ①获得 Xlock A ②读A=16? ③ A←A-1 写回A=15 Unlock A ④ ⑤ Xlock A 等待 获得Xlock A 读A=15 ?A←A-1 写回A=14 Commit Unlock A? T1 T2 ① 读A=16? ②? ③ A←A-1 写回A=15 ④ 读A=16? ? A←A-1 写回A=15 丢失修改 T1 T2 ① 读C=100 C←C*2 写回C ② ? ③ ROLLBACK C恢复为100 读C=200 T1 T2 ①? Xlock C 获得 ②? 读A=100 ? C←C*2 写回C ③? ④ Rollback Unlock A Slock C 等待 等待 读C=100 读“脏”数据 T1 T2 ① 读A=50 B=100 求和=150 ② ? ? ③ 读A=50 B=200 求和=250 (验算不对) 读B=100 B←B*2 写回B=200 T1 T2 ① Slock A、Slock B 读A=50、读B=100 求和=150 ② ?? ③ 读A=50、读B=100 求和=150 (验算正确) Unlock A、Unlock B Xlock B 等待 等待 等待 等待 获得 Xlock B ?读B=100 B←B*2 写回B=200 Commit Unlock B 不可重复读 加锁约定:加什么锁?何时释放锁? 丢失修改 1级封锁协议 X锁、事务结束 不可重复读 读“脏”数据 S锁、操作结束 2级封锁协议 S锁、事务结束 3级封锁协议 X锁 S锁 一致性保证 操作结束释放 事务结束释放 操作结束释放 事务结束释放 不丢失修改 不读脏数据 可重复读 1级封锁协议 √ √ 2级封锁协议 √ √ √ √ 3级封锁协议 √ √ √ √ √ 一、 概述 二、 封锁 三、 封锁协议 四、 活锁和死锁 五 、 两段锁协议 六 、 封锁的粒度 1. 活锁 如何避免? 先来先服务的策略 2. 死锁 T1 T2 Xlock R1 . . . Xlock R2 等待 等待 等待 . . . Xlock R2 . . Xlock R1 等待 等待 . 两个或多个事务封锁数据对象后,又请求加锁对方的封锁对象,从而出现死等待的现象。 (1)死锁的预防 ——破坏产生死锁的条件 顺序封锁法 存在的问题: 维护成本高、难于实现 一次封锁法 存在的问题: 扩大封锁范围、降低并发度 很难精确确定封锁对象 结论: 无法预防 措施: 诊断解除死锁法 (2)死锁的诊断与解除 允许死锁发生、解除死锁 ① 超时法 (等待时限) 优点:实现简单 缺点:误判死锁(时限短) 不能发现死锁(时限长) 等待图法 T:结点的集合(事务) U:边的集合(事务等待) 周期性检测等待图,发现回路,表示出现死锁。 G=(T,U) 解除死锁:选择死锁中代价最小的事务,撤消释放其所有锁。 一、 概述 二、 封锁 三、 封锁协议 四、 活锁和死锁 五 、 两段锁协议 六 、 封锁的粒度 并发操作如何调度? 如果一个事务运行过程中没有受到其他事务的干扰,那么就认为该事务的运行结果是正常的。 当 几个事务串行执行的结果与并行执行的正确结果一致时,把这种用串行方式代替并行方式的策略称为可串行化(Serializable)的调度。 可串行性是并行事务正确性的唯一准则 如何保证? 从理论上讲,可串行化调度是最简单的调度策略,但用户不能充分共享数据库资源。 保证方法:两段锁协议 两段锁协议 对数据读、写前,首先获得对该数据的封锁 释放封锁后,不再获得任何封锁 “两段”锁的含义 第一阶段:获得封锁,也称扩展阶段 第二阶段:释放封锁,也称收缩阶段 例:事务1的封锁序列: Slock A Slock B Xlock C ... Unlock B Unlock A Unlock C 事务2的封锁序列: Slock A ... Unlock A ... Slock B ... Xlock C ... Unlock C ... Unlock B 获得封锁、扩展阶段 释放封锁、收缩阶段 并行事务若遵守两段锁协议,则是可串行的、执行结果是正确的。 遵守两段锁协议是可串行化调度的充分条件,因此可串行化的调度中,不一定所有事务都必须符合两段锁协议。 两段锁协议与一次封锁法 一次封锁法遵守两段锁协议 遵守两段锁协议的事务可能发生死锁 2. 两段锁协议Vs.三级封锁协议 不同目的的协议 两段锁协议 保证并发调度的正确性 三级封锁协议 保证数据一致性 遵守第三级封锁协议必然遵守两段协议 一、 概述 二、 封锁 三、 封锁协议 四、 活锁和死锁 五 、 两段锁协议 六 、 封锁的粒度 封锁粒度 多粒度封锁 意向锁 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

http://funnyland.net/fengsuolidu/197.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有