版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Cha8 并发控制 本章内容 并发控制概述 封锁 活锁和死锁 可串行性 两段锁协议 事务的执行方式 T1T2 串行执行 时间 T1 T2 并发执行 交叉并发 (单处理机系统) 同时并发 (多处理机系统) 并发执行的结果是否正确? T1: Read(A) A:=A-10 WRITE(A) T2: Read(A) A:=A*2 WRITE(A) A=50-T1-T2-A=80 A=50-T2-T1-A=90 事务串行执行的结果都是正确的 并发操作引起的问题1丢失更新 lost update 时间事务T1A值事务T2 150 2Read(A) 3Read(A) 4A:=A-10 5A:=A*2 6W
2、rite(A)40 7Write(A) 8100 正确结果应为 T1-T280 T2-T190 并发操作引起的问题2不可重复读 non-repeatable read 时间事务T1A值事务T2 150 2Read(A)50 3Read(A) 4A:=A-10 5Read(A)40 6 并发操作引起的问题3读脏数据 dirty read 时间事务T1A值事务T2 150 2Read(A) 3A:=A-10 4Write(A) 540Read(A) 6rollback 750 封锁技术 排它型封锁exclusive locksX封锁,写锁 共享型封锁shared locksS封锁,读锁 两段封锁
3、数据被写时,不允许被后续事务读写 数据被读时,允许后续事务读,不允许写 相容矩阵 T1 T2X锁锁S锁锁无锁无锁 X锁锁NNY S锁锁NYY 无锁无锁YYY 已添加的锁 申请加的锁 封锁协议locking protocol-对数据对象的加锁规则 一级封锁协议 事务T1 对数据R申请X封锁 获得 修改数据 释放封锁 事务T2 对数据R申请X封锁 等待 获得封锁 修改数据 释放封锁 时间 事务T在修改数据R前申请X锁 事务结束时释放 解决丢失更新 问题 时间时间事务事务T1T1A A值值事务事务T2T2 1Xlock A50 2获得获得 3Read(A) 4Xlock A 5A:=A-10wait
4、 6Write(A)wait 7commit40wait 8UnLock Await 9获得获得Xlock A 10Read(A) 11A:=A*2 12Write(A) 1380commit 14UnLock A 丢失更新 不可重复读 读脏数据 时间时间事务事务T1T1A A值值事务事务T2T2 150 2Xlock A 3Read(A) 4A:=A-10 5Write(A) 6UnLock A40 7Xlock A 8Read(A) 9A:=A*2 10Write(A) 1180UnLock A 12commit 13rollback50 X封锁必须保留到 事务终点 二级封锁协议 事务T1
5、 对数据R加S封锁 事务T2 对数据对数据R加加X封锁封锁 (拒绝拒绝) 事务T3 对数据对数据R加加S封锁封锁 (允许允许) 一级封锁协议+ 事务T在读取数据R前申请S锁 读完后释放 时间 时间时间事务事务T1A事务事务T2 1Xlock A50 2Read (A) 3A:=A*2 4Write(A)100 5Slock A 6wait 7rollback50wait 8UnLock Await 9获得获得Slock A 1050Read (A) 11commit 12UnLock A 解决读脏 问题 丢失更新 不可重复读 读脏数据 三级封锁协议 事务T1 对数据R加S封锁 事务T2 对数据
6、对数据R加加X封锁封锁 (拒绝拒绝) 事务T3 对数据对数据R加加S封锁封锁 (允许允许) 一级封锁协议+ 事务T在读取数据R前申请S锁 事务结束时释放 时间 时间时间事务事务T1A B C事务事务T2 1Slock A50 100 2Slock B 3Read (A)50 4Read (B) 100 5C:=A+B 150 6Xlock B 7Read (A)50wait 8Read (B) 100wait 9C:=A+B 150wait 10Commit50 100 150wait 11UnLock Await 12UnLock Bwait 13获得获得Xlock B 14Read (B)
7、 15B:=B*2 1650 200 150Write(B) 17Commit 18UnLock B 解决不可重 复读问题 丢失更新 不可重复读 读脏数据 不同级别的封锁协议 X锁S锁一致性保证 操作结束 释放 事务结束 释放 操作结束 释放 事务结 束释放 不丢失 修改 不读脏 数据 可重复 读 一级封锁协议一级封锁协议 二级封锁协议二级封锁协议 三级封锁协议三级封锁协议 封锁方法引起的问题 活锁live lock 某个事务永远处于等待状态 死锁dead lock 多个事务互相等待 先来先服务 判断死锁的存在 撤销其中一个 死锁的发生 时间时间事务事务T1事务事务T2 1Xlock A 2X
8、lock B 3Read(A) 4Read(B) 5Xlock B 6Wait 7WaitXlock A 8WaitWait 9WaitWait T1T2 数据B 数据A 死锁的预防 一次封锁法 一次获得所有需要的锁,否则不许执行 降低系统并发度 难以事先确定封锁范围 顺序封锁法 按特定顺序申请封锁,不许违反次序 申请顺序难以确定 难以事先确定封锁范围 死锁的诊断与解除 超时法 某事务等待状态超过时限就认为被死锁 时限不容易设定 等待图法 图中是否存在环路 撤销代价最小的死锁事务 事务依赖图 T6 T5 T8 T4 T1 优先级 剩余执行时间 占用资源 选取某事务撤销 并发调度的可串行性 可串
9、行性可串行性是并发事务正确性的准则: 并发执行的结果与某种串行次序执行结果相同 T1 读B, A = B +1 T2 读A, B = A +1 T1T2 A=3 B=4 T2T1 A=4 B=3 保证并发调度可串行化的协议 两段锁协议两段锁协议 two-phase locking 2PL 时标方法 乐观方法 可串行化的调度 时间时间事务事务T1A B事务事务T2 1Slock B2 2 2Y=B 2 3UnLock B 4Xlock A 5Slock A 6A=Y+1wait 7Write (A)3 2wait 8UnLock Await 9X=A 3 10UnLock A 11Xlock B
10、 12B=X+1 133 4Write (B) 14UnLock B 时间时间事务事务T1A B事务事务T2 1Slock B2 2 2Y=B 2 3Slock A 4X=A 2 5UnLock B 6UnLock A 7Xlock A 8A=Y+1 9Write (A)3 2 10Xlock B 11B=X+1 123 3Write (B) 13UnLock A 14UnLock B 不可串行化的调度 两段封锁协议 对数据读写前先获得封锁 开始释放封锁后不能再申请 封锁 Lock (A) Lock(B) Lock(C) unlock (B) unlock(C) unlock(A) 扩展阶段扩
11、展阶段 收缩阶段收缩阶段 所有事务是两段式的 并发调度可串行化 时间时间事务事务T9F G H事务事务T10 10 0 0 2Lock S(F) 3Read (F) 4ATEMP:=F 5unlock (F) 6 7Lock S(G) 8Read (G) 9BTEMP:=G 10Lock X(F) 11F:=BTEMP+1 12Write(F) 13Lock X(H)1 0 0commit 14H:=ATEMP+1 15Write(H) 16commit1 0 1 两事务未遵守 两段式协议, 结果正确 T9 H:=F+1 T10 F:=G+1 正确结果: 1 0 1 1 0 2 时间时间事务事
12、务T9F G H事务事务T11 10 0 0 2Lock S(F) 3Read (F) 4ATEMP:=F 5unlock (F) 6 7Lock S(H) 8Read (H) 9CTEMP:=H 10Lock X(F) 11F:=CTEMP+1 12Write(F) 13Lock X(H)1 0 0commit 14H:=ATEMP+1 15Write(H) 16commit1 0 1 两事务未遵守 两段式协议, 结果错误 T9 H:=F+1 T11 F:=H+1 正确结果: 2 0 1 1 0 2 封锁的粒度granularity 封锁对象 逻辑单元 物理单元 属性,元组,关系,数据库 页
13、,块 封锁粒度并发度系统开销 封锁粒度并发度系统开销 多粒度封锁同时支持多种封锁粒度 多粒度树 数据库 关系R1关系Rn 元组1元组k元组1元组m 显示封锁与隐式封锁 意向锁intentional lock 对某节点加锁前 对某节点加IS锁其子节点要加S锁 对某节点加IX锁其子节点要加X锁 对某节点加SIX锁该节点要加S锁 其子节点要加X锁 对其上层节点加意向锁 意向锁的相容矩阵 T1 T2 S锁锁X锁锁 ISIXSIX 无锁无锁 S锁锁YNYNNY X锁锁NNNNNY ISYNYYYY IXNNYYNY SIXNNYNNY 无锁无锁YYYYYY X SIX SIX IS 数据库的完整性 完整
14、性 正确性和相容性 垃圾进垃圾出 garbage in garbage out 对数据库的非法更新 输入数据错误 操作、程序错误 系统故障 事务的并发执行 人为破坏 完整性子系统 功能 监督事务的执行 针对违反现象采取适当操作 完整性规则的构成 何时使用触发条件触发条件 何种错误约束条件约束条件 如何处理ELSE子句子句 域完整性规则 域联系的规则 关系完整性规则 SQL的完整性约束 主键约束主键约束 外键约束外键约束 删除、修改基本关系元组时的考虑 属性值上的约束属性值上的约束 非空值约束 检查子句 域约束子句 全局约束全局约束 基于元组的检查子句 断言 删除、修改基本关系元组时的考虑 Re
15、strict方式 参照表中无相关记录时允许操作 Cascade方式 参照表中的相关记录一同更新 Set null方式 参照表中的相关记录字段置空 断言assertions Create assertion asse1 check不许男生学习张老师的课程不许男生学习张老师的课程 (not exists没这种记录:没这种记录: (select *男生学习张老师课程的记录男生学习张老师课程的记录 from sc where cno in (select cno from c where teacher=zhang) And sno in (select sno from s where sex=m)
16、 ); 断言assertions Create assertion asse2 check每组人数不能超过每组人数不能超过50 (50=all (select count(sc.sno)每门课程的学习人数每门课程的学习人数 from s,sc where s.sno=sc.sno and sex=m group by cno ); 约束的命名 Sno char(4) constraint s_pk primary key; Age smallint constraint s_check check(age=15 and age=15 and value=15 and age=15 and age=25); Drop as
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贵州城市职业学院《医用治疗仪器》2023-2024学年第一学期期末试卷
- 2025安徽省安全员-C证考试(专职安全员)题库及答案
- 2025江苏省建筑安全员B证考试题库及答案
- 贵阳人文科技学院《中国古代文学一》2023-2024学年第一学期期末试卷
- 2025辽宁省建筑安全员《B证》考试题库
- 2025湖南省安全员知识题库及答案
- 2025四川建筑安全员B证考试题库
- 2025重庆市建筑安全员C证(专职安全员)考试题库
- 2025甘肃省建筑安全员知识题库
- 2025年海南建筑安全员C证(专职安全员)考试题库
- 2024伊利在线测评题
- 安徽省A10联盟2025届高二上数学期末考试试题含解析
- 人民日报出版社有限责任公司招聘笔试题库2024
- 燃烧仿真.燃烧数值模拟方法:化学反应动力学模型:燃烧仿真前沿技术与研究
- 线性代数考试练习题带答案大全(二)
- 重症超声与休克-课件
- 电梯工程师在电梯设计中的工作内容
- 二年级数学上册口算天天练
- 2024国家开放大学电大本科《液压气动技术》期末试题及答案
- GB/T 30306-2024家用和类似用途饮用水处理滤芯
- 08D800-5 民用建筑电气设计与施工 常用电气设备安装与控制
评论
0/150
提交评论