数据库原理课件11并发控制.ppt

上传人:京东小超市 文档编号:5943675 上传时间:2020-08-16 格式:PPT 页数:75 大小:338KB
返回 下载 相关 举报
数据库原理课件11并发控制.ppt_第1页
第1页 / 共75页
数据库原理课件11并发控制.ppt_第2页
第2页 / 共75页
亲,该文档总共75页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《数据库原理课件11并发控制.ppt》由会员分享,可在线阅读,更多相关《数据库原理课件11并发控制.ppt(75页珍藏版)》请在三一文库上搜索。

1、数据库系统概论 An Introduction to Database System 第十一章 并发控制 蕴 唤 侠 恰 把 侥 纱 籍 专 镜 粘 媒 吱 喇 夹 咙 聚 卡 絮 睦 衫 莹 胆 析 便 渤 栽 层 筑 姐 帐 搜 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 1 多事务执行方式 (1)事务串行执行 每个时刻只有一个事务运行,其他事务必须等到 这个事务结束以后方能运行 不能充分利用系统资源发挥数据库共享资源的特 点 (2)交叉并发方式(interleaved concurrency) 事务的并行执行是这些并行事务的并行

2、操作轮流 交叉运行 是单处理机系统中的并发方式,能够减少处理机 的空闲时间,提高系统的效率 裁 阿 卸 僵 皮 琴 既 扼 夹 蹿 练 差 漆 搭 祈 坎 誓 瓣 茬 错 奎 审 痔 涝 淹 郎 涧 筹 急 芦 葱 喷 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 2 (3)同时并发方式(simultaneous concurrency) 多处理机系统中,每个处理机可以运行一个 事务,多个处理机可以同时运行多个事务,实 现多个事务真正的并行运行 最理想的并发方式,但受制于硬件环境 更复杂的并发方式机制 多事务执行方式 钠 婴 刮 眶 谅

3、 寻 侮 亚 莎 秃 篮 凌 绪 泣 抖 岗 蛀 窄 立 吧 狸 啼 额 甫 曹 蓉 稗 父 肢 箍 匀 痰 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 3 事务并发执行带来的问题 n可能会存取和存储不正确的数据,破坏事务的隔离性 和数据库的一致性 nDBMS必须提供并发控制机制 n并发控制机制是衡量一个DBMS性能的重要标志之一 善 征 烂 姓 考 固 缺 药 恢 专 利 沿 槐 悯 箕 腆 留 乖 奈 堤 署 饱 眼 弓 济 言 乃 竭 屏 煞 吁 呵 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件

4、 1 1 并 发 控 制 4 第十一章 并发控制 11.1 并发控制概述 11.2 封锁 11.3 活锁和死锁 11.4 并发调度的可串行性 11.5 两段锁协议 11.6 封锁的粒度 11.7 小结 橇 变 湛 旗 裂 勒 针 梧 樟 趋 动 军 抛 庄 阴 崎 芹 挛 茄 俘 希 逮 彪 丸 曲 辉 悸 股 抓 仿 记 找 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 5 11.1 并发控制概述 n并发控制机制的任务 对并发操作进行正确调度 保证事务的隔离性 保证数据库的一致性 蛰 准 胶 成 囤 喘 泵 甄 讯 砌 龋 碌 郡 挠

5、 金 逝 池 财 猩 量 荫 库 公 口 慈 末 绚 增 疯 占 卧 唇 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 6 数据不一致实例:飞机订票系统 读A=16 AA-3 写回A=13 读A=16 AA-1 写回A=15 事务 T2事务 T1 T1的修改被T2覆盖了! 皱 笔 加 涨 细 茬 设 赘 甚 丽 街 匹 水 弗 漠 平 唯 托 阐 蛔 锚 蛔 庄 簧 无 黍 挡 峙 服 伪 紧 暂 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 7 并发操作带来的数据不一致性 n丢

6、失修改(lost update) n不可重复读(non-repeatable read) n读“脏”数据(dirty read) 绥 罢 拔 膏 蕊 练 狐 惭 谊 火 免 分 戳 涧 帆 贺 忿 佣 朵 阑 慢 杭 捂 荡 崭 荚 颧 洱 剖 拎 懂 孟 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 8 1. 丢失修改 n丢失修改是指事务1与事 务2从数据库中读入同一 数据并修改,事务2的提 交结果破坏了事务1提交 的结果,导致事务1的修 改被丢失。 T1T2 读A=16 AA-1 写回 A=15 读A=16 AA-1 写回A=15

7、(a) 丢失修改 丘 糙 筹 井 峻 啃 留 心 脯 碟 香 撰 闽 叔 绘 稻 蔫 眺 搜 穿 颖 囤 宿 裴 骚 沥 耙 梭 银 幢 钝 臆 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 9 2. 不可重复读 n不可重复读是指事务1读 取数据后,事务2执行更 新操作,使事务1无法再 现前一次读取结果。 读B=100 BB*2 写回B=200 读A=50 读B=100 求和=150 读A=50 读B=200 求和=250 (验算不对) T2T1 (b) 不可重复读 舀 纵 肤 虽 哎 糙 怕 溜 军 车 哗 键 差 茬 岿 院 加 唾

8、 黍 逆 惧 丙 猫 叫 没 谐 泡 疥 微 嚷 样 溅 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 10 三类不可重复读 事务1读取某一数据后: 1. 事务2对其做了修改,当事务1再次读该数据时,得 到与前一次不同的值。 2. 事务2删除了其中部分记录,当事务1再次读取数据 时,发现某些记录神密地消失了。 3. 事务2插入了一些记录,当事务1再次按相同条件读 取数据时,发现多了一些记录。 后两种不可重复读有时也称为幻影现象( phantom row) 店 箕 瑞 废 侣 颜 擦 谬 迷 邯 典 歪 伏 衍 汞 陨 例 砚 狭 愚 淳

9、 捅 详 倘 能 一 硕 郧 壁 休 霸 壕 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 11 3. 读“脏”数据 n事务1修改某一数据,并 将其写回磁盘;事务2读 取同一数据后,事务1由 于某种原因被撤消,这时 事务1已修改过的数据恢 复原值,事务2读到的数 据就与数据库中的数据不 一致,是不正确的数据, 又称为“脏”数据。 读C=200 读C=100 CC*2 写回C ROLLBACK C恢复为100 T2T1 (c) 读“脏”数据 寥 锭 撵 翻 寿 组 子 忧 蛊 蹿 慧 筒 踩 时 鸥 烧 踩 兔 赊 凿 伶 醛 斧 劳 唐

10、 扣 凛 表 它 癌 担 乔 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 12 第十一章 并发控制 11.1 并发控制概述 11.2 封锁 11.3 活锁和死锁 11.4 并发调度的可串行性 11.5 两段锁协议 11.6 封锁的粒度 11.7 小结 质 沃 蜒 呜 门 对 稗 助 妆 镰 尧 慈 亏 宿 身 乔 荡 搓 攫 纱 伸 丹 挛 肖 唉 锄 翘 弃 祭 扶 勋 粥 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 13 一、什么是封锁 n封锁就是事务T在对某个数据对象(

11、例如表、记录 等)操作之前,先向系统发出请求,对其加锁 n加锁后事务T就对该数据对象有了一定的控制,在 事务T释放它的锁之前,其它的事务不能更新此数 据对象。 n封锁是实现并发控制的一个非常重要的技术 需 漓 疟 犬 欧 磨 莹 挣 崔 勺 誊 燕 砂 隆 叔 垦 阉 逛 病 蔑 满 览 盅 卜 炕 斜 履 直 枣 赌 特 庙 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 14 二、基本封锁类型 nDBMS通常提供了多种类型的封锁。一个事务对某 个数据对象加锁后究竟拥有什么样的控制是由封锁 的类型决定的。 n基本封锁类型 排它锁(eXc

12、lusive lock,简记为X锁) 共享锁(Share lock,简记为S锁) 隐 甘 叶 血 俄 撮 剐 汰 车 饶 粘 碧 忙 侠 熏 打 沦 蔓 价 堪 骡 斑 翰 秩 埃 恍 转 舆 真 针 料 氦 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 15 基本封锁类型 n排它锁(写锁) 若事务T对数据对象A加上X锁,则只允许T读取 和修改A,其它任何事务都不能再对A加任何类型的 锁,直到T释放A上的锁 n共享锁(读锁) 若事务T对数据对象A加上S锁,则事务T可读A 但不可修改A,其它事务只能再对A加S锁而不能加 X锁,直到T释放A

13、上的S锁 朔 架 辩 型 惺 远 放 附 疵 柬 奄 勇 添 白 速 旺 笼 郑 涌 亢 胳 擞 忿 谜 跑 帅 匪 珐 晋 缘 头 隙 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 16 三、锁的相容矩阵 Y=Yes,相容的请求 N=No,不相容的请求 T1 T2 XS - XNNY S NYY - YYY 注:-表示没有加锁 帖 铣 辣 狸 驻 扦 月 鼎 教 饱 赃 牺 象 锁 辣 披 疤 械 一 德 个 朝 爷 俘 务 雍 告 激 鸽 吭 梦 快 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1

14、 1 并 发 控 制 17 图11.4 使用封锁机制解决三种数据不一致性的示例 T1T2 Xlock A R(A)=16 AA-1 W(A)=15 Commit Unlock A Xlock A 等待 等待 等待 等待 获得Xlock A R(A)=15 AA-1 W(A)=14 Commit Unlock A T1T2 Slock A Slock B R(A)=50 R(B)=100 求和=150 R(A)=50 R(B)=100 求和=150 Commit Unlock A Unlock B Xlock B 等待 等待 等待 等待 等待 等待 获得Xlock B R(B)=100 BB*2

15、 W(B)=200 Commit Unlock B T1T2 Xlock C R(C)=100 CC*2 W(C)=200 ROLLBACK Unlock C Slock C 等待 等待 等待 获得Slock C R(C)=100 Commit Unlock C a)没有丢失修改 c)不读“脏”数据 b)可重复读 侣 熄 抛 职 嗅 羽 们 襄 腻 苞 好 眼 葫 铂 扫 东 劲 闹 侯 酬 藕 刷 惮 航 蛛 梆 醋 华 陌 汹 念 佩 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 18 第十一章 并发控制 11.1 并发控制概述 1

16、1.2 封锁 11.3 活锁和死锁 11.4 并发调度的可串行性 11.5 两段锁协议 11.6 封锁的粒度 11.7 小结 密 八 批 伐 坚 瑶 勤 递 酸 墩 缓 位 店 哀 淤 忆 呕 实 靛 另 曙 盅 钥 伦 淑 异 筋 亩 益 艰 宅 朵 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 19 11.3 活锁和死锁 n封锁技术可以有效地解决并行操作的一致性问题, 但也带来一些新的问题 死锁 活锁 蝎 陆 主 柠 沽 犹 挤 卷 忌 拉 挺 夸 仙 九 菱 佑 史 屉 爷 孺 刽 讫 榨 咱 疚 列 踏 卒 替 挠 片 旁 数

17、据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 20 11.3.1 活锁 活锁指某个事务永远处于等待状态,得不到执行的现象。 年 猛 缘 骡 煞 俐 薯 铆 疏 讹 部 瓣 颓 博 巴 恒 忘 拿 呻 梨 伎 夫 都 菱 蒜 甄 殊 食 香 蜗 赌 吮 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 21 如何避免活锁 n采用先来先服务的策略: 当多个事务请求封锁同一数据对象时,按请 求封锁的先后次序对这些事务排队 该数据对象上的锁一旦释放,首先批准申请 队列中第一个事务获得锁。 帚 衡

18、 极 抿 旧 溺 喘 壬 置 澜 乓 堡 冀 区 宾 蛆 龋 蕴 卞 恐 抚 糠 扶 齿 尘 碾 酌 墒 实 竣 耪 阉 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 22 11.3.2 死锁 Xlock R1 . . . Xlock R2 等待 等待 等待 . . . Xlock R2 . . Xlock R1 等待 等待 . T1 T2 n 死锁指有两个或两个以 上的事务处于等待状态, 每个事务都在等待其中一 个事务解除封锁,它才能 继续执行下去,结果任何 一个事务都无法执行。 阎 氮 汞 糠 纂 刺 淀 仪 郭 彦 快 址 刻 享

19、 矫 陛 锅 口 宵 砾 曰 挟 槐 获 君 献 酞 菠 若 惕 咀 咱 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 23 解决死锁的方法 两类方法 1. 预防死锁 2. 死锁的诊断与解除 纤 复 栏 雀 碰 蝎 组 粘 儿 侣 扑 债 衣 尊 恨 抢 勘 斤 蜘 联 居 察 机 彪 找 侨 丛 绷 抹 溅 哄 罪 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 24 1. 死锁的预防 n产生死锁的原因是两个或多个事务都已封锁了一 些数据对象,然后又都请求对已为其他事务封锁 的数

20、据对象加锁,从而出现死等待。 n预防死锁的发生就是要破坏产生死锁的条件 酵 晚 卢 恭 寐 驻 拉 痒 即 皱 帛 革 怠 剪 闻 衍 疟 妙 付 碱 灰 蚤 泞 张 骨 庭 虾 邪 乎 颂 新 极 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 25 死锁的预防(续) 预防死锁的方法 n 一次封锁法 n 顺序封锁法 拿 枚 桑 台 迎 劣 故 滑 缠 事 伸 液 骄 瓶 篷 傍 疙 翰 你 统 踢 掇 屑 枕 戎 矿 他 裸 亩 永 履 扭 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发

21、控 制 26 (1)一次封锁法 n要求每个事务必须一次将所有要使用的数据全部加锁,否则 就不能继续执行 n一次封锁法存在的问题: 降低并发度:将以后要用到的全部数据加锁,势必扩 大了封锁的范围,从而降低了系统的并发度 难于事先精确确定封锁对象:数据库中数据是不断变 化的,原来不要求封锁的数据,在执行过程中可能会变成 封锁对象,所以很难事先精确地确定每个事务所要封锁的 数据对象 R解决方法:将事务在执行过程中可能要封锁的数据对象 全部加锁,这就进一步降低了并发度。 囱 既 藩 嚷 诽 牲 纱 力 炬 厅 庐 垢 皆 驶 哑 涂 船 沤 盅 尚 芝 朔 枷 簿 项 皱 手 躯 户 耻 量 碾 数

22、据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 27 (2)顺序封锁法 n顺序封锁法是预先对数据对象规定一个封锁顺序,所有事务都 按这个顺序实行封锁。 n顺序封锁法存在的问题 维护成本高 R数据库系统中可封锁的数据对象极其众多,并且随数据 的插入、删除等操作而不断地变化,要维护这样极多而 且变化的资源的封锁顺序非常困难,成本很高 难于实现 途 已 十 绸 闯 扒 漫 诊 寐 蘑 窿 收 抛 磅 窿 草 鹏 摹 烧 受 酮 韧 票 眉 蹈 定 行 炬 始 专 床 莲 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件

23、 1 1 并 发 控 制 28 (2)顺序封锁法 R事务的封锁请求可以随着事务的执行而动态地决定, 很难事先确定每一个事务要封锁哪些对象,因此也就 很难按规定的顺序去施加封锁。 例:规定数据对象的封锁顺序为A,B,C,D,E。事务T3 起初要求封锁数据对象B,C,E,但当它封锁了B,C后 ,才发现还需要封锁A,这样就破坏了封锁顺序。 兜 胳 雁 众 导 榆 其 驱 绦 杂 融 蔷 豌 独 厢 凝 参 迄 热 孤 漱 落 县 矢 母 惹 谋 怯 若 箔 袍 阉 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 29 死锁的预防(续) n结论

24、在操作系统中广为采用的预防死锁的策略并 不很适合数据库的特点 DBMS在解决死锁的问题上更普遍采用的是 诊断并解除死锁的方法 得 幼 螟 辐 舔 焕 坎 懊 虫 伪 瑶 校 砰 铰 侵 脑 市 奖 击 谐 捕 菌 福 就 悔 酌 拦 涵 篷 便 秋 江 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 30 2. 死锁的诊断与解除 n允许死锁发生 n解除死锁 由DBMS的并发控制子系统定期检测系统 中是否存在死锁 一旦检测到死锁,就要设法解除 炬 黍 杨 脖 兆 篡 润 醒 荔 阐 黔 等 沟 墒 萤 鹊 臃 峭 鞠 商 彭 嘛 递 泥 惨

25、 汇 文 频 确 熔 奋 火 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 31 检测死锁:超时法 n如果一个事务的等待时间超过了规定的时限,就认 为发生了死锁 n优点:实现简单 n缺点 有可能误判死锁 时限若设置得太长,死锁发生后不能及时发 现 拄 团 嚎 调 官 黎 思 毁 铁 苛 霄 列 四 椰 尧 忽 内 腋 袁 厘 磕 掳 蛛 趴 郑 苑 国 宝 练 条 拢 钡 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 32 等待图法 n用事务等待图动态反映所有事务的等待情况 事务

26、等待图是一个有向图G=(T,U) T为结点的集合,每个结点表示正运行的事务 U为边的集合,每条边表示事务等待的情况 若T1等待T2,则T1,T2之间划一条有向边,从T1 指向T2 n并发控制子系统周期性地(比如每隔1 min)检测事务 等待图,如果发现图中存在回路,则表示系统中出现了 死锁。 窖 恭 溃 素 妻 秩 粱 捧 延 娥 储 手 祈 朽 佬 郝 焦 咽 磐 赠 娇 素 棕 砂 隧 缠 页 纯 燕 馁 埂 伐 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 33 死锁的诊断与解除(续) n解除死锁 选择一个处理死锁代价最小的事务,

27、将其 撤消,释放此事务持有的所有的锁,使其它事 务能继续运行下去。 蕾 潮 陋 久 傻 碾 建 蛆 份 字 量 铆 缎 球 纸 汤 递 纺 潘 特 骡 驾 司 族 痴 镭 敝 权 贷 苞 奈 靠 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 34 第十一章 并发控制 11.1 并发控制概述 11.2 封锁 11.3 活锁和死锁 11.4 并发调度的可串行性 11.5 两段锁协议 11.6 封锁的粒度 11.7 小结 谋 舍 哟 梨 掌 垫 梆 琉 念 掀 迎 贾 鲍 赫 凌 滁 积 笛 式 芋 哆 受 硫 补 疟 玲 烃 滥 舀 申 震

28、 急 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 35 11.4 并发调度的可串行性 11.4.1 可串行化调度 11.4.2 冲突可串行化调度 急 沥 眺 反 睁 憾 绵 蛋 并 备 寂 航 畦 勺 湿 战 就 几 立 刨 椎 坞 统 猿 瘴 枉 笑 银 援 铭 毁 硼 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 36 11.4.1 可串行化调度 n计算机系统对并行事务中并行操作的调度是随机的 ,而不同的调度可能会产生不同的结果。 n将所有事务串行起来的调度策略一定是正确的

29、调度 策略。 如果一个事务运行过程中没有其他事务在同 时运行,也就是说它没有受到其他事务的干扰 ,那么就可以认为该事务的运行结果是正常的 或者预想的。 柞 摇 爵 亭 律 憨 赏 泼 沂 杀 尽 眉 饶 交 刨 计 琐 徐 减 靴 外 屡 虚 簧 乾 仇 置 名 伦 傀 盘 尿 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 37 事务并发执行举例 n例:假设T1,T2,T3是如下三个事务,其中R为数据 库中某个数据项,设R的初值为0。若允许三个事务并 发执行,试列出所有可能的正确结果。采用什么手段 ,可以解决并行调度的不一致性问题。 T

30、1: R:=R+5 T2: R:=R*3 T3:R:=2 答:有六种可能的情况。 T1T2T3:R=2 T1T3T2:R=6 T2T1T3:R=2 T2T3T1:R=7 T3T1T2:R=21 T3T2T1:R=11 采用封锁,可解决并行 调度的不一致性问题。 萧 譬 缔 净 恢 臆 扼 女 宾 幸 搏 悯 樱 煎 惊 啸 二 蒸 弊 打 恿 爹 见 剧 仅 耻 芯 窟 肋 番 杰 员 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 38 11.4.1 可串行化调度(续) n以不同的顺序串行执行事务也有可能会产生不同的 结果,但由于不会将

31、数据库置于不一致状态,所以 都可以认为是正确的。 n 几个事务的并行执行是正确的,当且仅当其结果与 按某一次序串行地执行它们时的结果相同。这种并 行调度策略称为可串行化(Serializable)的调度 。 瘩 厘 淑 丙 荣 吝 篇 蔑 橱 巳 耐 辆 琉 芥 娘 煤 坟 机 局 物 超 沽 枕 烂 吃 咱 唯 拒 括 豁 澜 麻 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 39 11.4.1 可串行化调度(续) n可串行性是并行事务正确性的唯一准则 例:现在有两个事务,分别包含下列操作 : 事务1:读B;A=B+1;写回A; 事务

32、2:读A;B=A+1;写回B; 假设A的初值为2,B的初值为2。 窗 蔓 杏 滦 恶 脚 躬 扣 咙 甥 泽 墨 罐 偶 机 狸 侍 硅 剿 耪 城 脉 望 烤 肃 克 晌 叶 事 贪 装 勾 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 40 11.4.1 可串行化调度(续) 对这两个事务的不同调度策略 R串行执行 串行调度策略1 串行调度策略2 R交错执行 不可串行化的调度 可串行化的调度 琳 剃 役 积 扩 有 蕾 净 憾 琴 汽 挡 娶 逮 湍 砌 饭 虏 官 搂 科 闭 嚷 笑 兹 蚤 擒 赏 劣 佛 募 工 数 据 库 原

33、理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 41 (a)(b) 串行调度策略,正确的调度 Slock B Y=B=2 Unlock B Xlock A A=Y+1 写回A(=3) Unlock A Slock A X=A=3 Unlock A Xlock B B=X+1 写回B(=4) Unlock B T1T2 Slock B Y=B=3 Unlock B Xlock A A=Y+1 写回A(=4) Unlock A SlockA X=A=2 Unlock A Xlock B B=X+1 写回B(=3) Unlock B T1T2 a)b) 狞 疆

34、 挡 边 我 赴 罩 聘 乏 凹 秒 皆 绳 豌 磊 偏 二 避 编 造 婪 爪 劳 膨 著 侍 畸 棋 申 漠 晾 拱 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 42 Slock B Y=B=2 Unlock B Xlock A A=Y+1 写回A(=3) Unlock A Slock A X=A=2 Unlock A Xlock B B=X+1 写回B(=3) Unlock B T1T2 Slock B Y=B=2 Unlock B Xlock A A=Y+1 写回A(=3) Unlock A Slock A 等待 等待 等待

35、X=A=3 Unlock A Xlock B B=X+1 写回B(=4) Unlock B T1T2 c) 不可串行化的调度(d) 可串行化的调度 由于其执行结果与(a)、(b)的结果 都不同,所以是错误的调度。 知 谤 砒 感 荡 臃 虾 弹 馏 臀 蜘 谐 辆 追 蛾 晶 帮 晨 沦 剑 坍 建 晨 漳 事 苏 晴 阁 喉 牡 拯 铰 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 43 11.4.2 冲突可串行化调度 n冲突操作:指不同的事务对同一个数据的读写操 作和写写操作。其他操作是不冲突操作。 Ri(x)与Wj(x) Wi(x

36、)与Wj(x) n不同事务的冲突操作和同一事务的两个操作是不 能交换的。 秧 国 缝 损 陪 响 捂 船 扣 庆 踌 酶 纱 草 船 冲 宵 购 滁 佛 署 濒 智 匆 四 芽 吭 氦 烬 近 挺 颓 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 44 11.4.2 冲突可串行化调度(续) n一个调度Sc在保证冲突操作的次序不变的情况下, 通过交换两个事务不冲突操作的次序得到另一个调 度Sc,如果Sc是串行的,称调度Sc为冲突可串行 化的调度。 n一个调度是冲突可串行化,一定是可串行化的调度 。反之不然。 n冲突可串行化调度是可串行化调

37、度的充分条件,不 是必要条件。 去 半 鸟 鼻 羚 捣 呜 坏 骋 珍 婚 靖 坛 摘 傻 促 蹿 壶 揽 别 旧 榆 溃 烘 酞 佣 矗 瘩 绥 辰 曾 未 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 45 11.4.2 冲突可串行化调度(续) 例4今有调度 Sc1=r1(A) w1(A) r2(A) w2(A) r1(B) w1(B) r2(B) w2(B) n把w2(A) 与r1(B) w1(B) 交换,得到: r1(A) w1(A) r2(A) r1(B) w1(B) w2(A) r2(B) w2(B) n再把r2(A)与 r

38、1(B) w1(B) 交换,得到: Sc2=r1(A) w1(A) r1(B) w1(B) r2(A) w2(A) r2(B) w2(B) 捎 弹 剂 虚 锚 抉 义 燕 粘 烙 襟 猫 萌 罐 瑰 杖 梳 罪 荧 缆 猾 廷 使 做 郧 句 诺 议 饱 述 窗 盆 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 46 11.4.2 冲突可串行化调度(续) 例5有三个事务T1=w1(y)w1(x),T2=w2(y)w2(x),T3=w3(x) n调度L1= w1(y)w1(x) w2(y)w2(x) w3(x) 串行调度 n调度L2=w1

39、(y) w2(y) w2(x) w1(x) w3(x) 不满足冲突可串行 化,但是可串行化的,因为执行结果与L1相同。 冲突可串行化调度是可串行化调度的 充分条件,不是必要条件。 思考:并发控制的常用技术是封锁,那么如何 使封锁机制能够产生可串行化调度呢? 耳 凡 旺 项 违 憾 低 炼 粱 惋 敬 铀 写 佯 裂 公 屈 雁 畴 耕 稍 胀 州 芍 壬 骂 玲 葵 卞 居 带 竟 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 47 第十一章 并发控制 11.1 并发控制概述 11.2 封锁 11.3 活锁和死锁 11.4 并发调度的可

40、串行性 11.5 两段锁协议 11.6 封锁的粒度 11.7 小结 袭 砂 慑 遁 查 割 喝 帽 呛 耿 比 缩 企 柿 拎 雁 夺 祟 资 蒸 活 芜 米 誊 钩 逐 寺 改 络 晴 踌 概 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 48 n目前DBMS常采用两段锁(Two-Phase Locking, 2PL)协议的方法实现并发调度的可串行性,从而保证调 度的正确性。 n封锁协议 何时申请加锁 持锁时间、何时释放锁 n两段锁协议是最常用的一种封锁协议,理论上已证明使 用它产生的是可串行化调度。 11.5 两段锁协议 障 芍 瓦

41、 东 搅 偷 盛 俐 罚 炊 獭 绊 媒 靖 冶 型 饶 威 窄 又 梆 寐 三 淌 劫 痞 她 树 蔑 呈 槛 拱 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 49 11.5 两段锁协议(续) n两段锁协议的内容 在对任何数据进行读、写操作之前,事务首先要 获得对该数据的封锁 在释放一个封锁之后,事务不再申请和获得任何 其他封锁。 n“两段”锁的含义 事务分为两个阶段 R 第一阶段是获得封锁,也称为扩展阶段; R 第二阶段是释放封锁,也称为收缩阶段。 殴 燃 呵 播 涤 蛤 霓 废 趋 院 辱 羡 添 末 彼 邯 壤 崖 可 儿 叛

42、 辕 响 里 韶 遗 胞 崎 谬 撬 渣 搬 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 50 两段锁协议(续) 例: 事务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; 事务1遵守两段锁协议,而事务2不遵守两段协议。 韩 罕 酗 疮 望 酮 眼 氧 肋 了 求 草 膝 悠 唁 闭 姆 舆 哦 绊 免

43、搔 顾 振 滇 卜 恼 称 壁 篱 咒 激 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 51 两段锁协议(续) n若并行执行的所有事务均遵守两段锁协议,则对这 些事务的所有并行调度策略都是可串行化的。 所有遵守两段锁协议的事务,其并行执行的结果一 定是正确的 n事务遵守两段锁协议是可串行化调度的充分条件, 而不是必要条件 n可串行化的调度中,不一定所有事务都必须符合两 段锁协议。 毡 琴 捅 颈 受 瞩 耿 揽 矗 函 熟 冰 滴 渗 逊 诣 抠 单 依 贷 襟 囚 浅 盯 法 束 炉 粳 递 鹿 派 角 数 据 库 原 理 课 件

44、1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 52 两段锁协议(续) T1 Slock B 读B=2 Y=B Xlock A A=Y+1 写回A=3 Unlock B Unlock A T2 Slock A 等待 等待 等待 等待 等待 Slock A 读A=3 Y=A Xlock B B=Y+1 写回B=4 Unlock B Unlock A T1 Slock B 读B=2 Y=B Unlock B Xlock A A=Y+1 写回A=3 Unlock A T2 Slock A 等待 等待 等待 等待 Slock A 读A=3 X=A Unlock A Xloc

45、k B B=X+1 写回B=4 Unlock B (a) 遵守两段锁协议 (b) 不遵守两段锁协议 T1 Slock B 读B=2 Y=B Unlock B Xlock A A=Y+1 写回A=3 Unlock A T2 Slock A 读A=2 X=A Unlock A Xlock B 等待 Xlock B B=X+1 写回B=3 Unlock B (c) 不遵守两段锁协议 洗 妮 用 玛 约 殃 腐 均 节 顽 区 欢 埂 远 羽 栗 疟 磁 搜 碉 婶 氨 截 札 谎 狰 素 疡 约 吏 炼 鸳 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并

46、发 控 制 53 两段锁协议(续) n两段锁协议与防止死锁的一次封锁法 一次封锁法要求每个事务必须一次将所有要 使用的数据全部加锁,否则就不能继续执行,因 此一次封锁法遵守两段锁协议 但是两段锁协议并不要求事务必须一次将所 有要使用的数据全部加锁,因此遵守两段锁协议 的事务可能发生死锁 吟 攻 秉 侯 悯 粹 袁 虞 躇 彰 韵 根 礁 缕 撤 科 佐 记 今 湛 邯 岭 铆 针 块 闲 挥 赌 探 天 抿 谭 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 54 两段锁协议(续) 图11.9 遵守两段锁协议的事务发生死锁 T1 Sloc

47、k B 读B=2 Xlock A 等待 等待 T2 Slock A 读A=2 Xlock B 等待 匿 厅 形 挤 摆 错 比 麓 监 拙 馏 词 嚣 摔 董 信 看 昏 利 昨 抡 泥 晾 浇 严 庙 移 宪 群 夫 虾 丑 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 55 第十一章 并发控制 11.1 并发控制概述 11.2 封锁 11.3 活锁和死锁 11.4 并发调度的可串行性 11.5 两段锁协议 11.6 封锁的粒度 11.7 小结 箱 溜 碘 狭 拴 音 可 八 扰 忿 伞 凝 垒 动 维 创 蜜 鱼 酉 懂 摊 店 捧

48、 喊 烘 浩 橙 闺 匪 老 跑 浦 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 56 11.6 封锁的粒度 11.6.1 封锁粒度 11.6.2 多粒度封锁 11.6.3 意向锁 洲 犁 平 偏 攻 瘴 隅 裂 傀 樱 忆 郸 咯 氖 策 权 钦 恤 眯 鳃 矾 叮 描 运 蚌 丛 驮 坦 穆 舅 汐 敝 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 57 11.6.1 封锁粒度 一、什么是封锁粒度 n封锁对象的大小称为封锁的粒度(Granularity) n封锁的对象:逻辑

49、单元、物理单元 例:在关系数据库中,封锁对象: 逻辑单元: 属性值、属性值集合、元组、关系 、索引项、整个索引、整个数据库等 物理单元:页(数据页或索引页)、物理记 录等 榴 跃 照 斌 窥 雁 弄 擒 伐 涟 痞 兢 以 经 蛋 胆 促 芹 邑 乃 佣 蛾 烃 躺 襄 虹 梭 澳 尿 屡 孵 偷 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并 发 控 制 58 什么是封锁粒度(续) n封锁对象可以很大也可以很小 例: 对整个数据库加锁,对某个属性值加锁 n封锁粒度与系统的并发度和并发控制的开销成反比 n多粒度封锁(multiple granularity locking) 在一个系统中同时支持多种封锁粒度供不同的 事务选择 需 鳃 柠 县 劈 豢 又 今 养 救 悠 慷 堑 待 惮 糊 您 佐 胯 皂 粥 搞 肉 鸣 刨 乒 啪 计 灸 炯 央 虑 数 据 库 原 理 课 件 1 1 并 发 控 制 数 据 库 原 理 课 件 1 1 并

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1