版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、回顾回顾T-SQL整合:整合:表达示、运算符、流程控制语句(顺序执行、条件分支、表达示、运算符、流程控制语句(顺序执行、条件分支、循环和跳转)循环和跳转)。数据库原理与应用数据库原理与应用第第17讲讲 事务并发调度事务并发调度提纲提纲重点重点了解多事务并发调度可能导致的错误:了解多事务并发调度可能导致的错误:丢失修改、读脏丢失修改、读脏数据、不可重复读。数据、不可重复读。了解了解S锁和锁和X锁。锁。了解死锁的原因和解除死锁的方法。了解死锁的原因和解除死锁的方法。了解了解SQL Server的隔离级别。的隔离级别。难点:难点:丢失修改、读脏数据、不可重复读三种错误的产生原因丢失修改、读脏数据、不
2、可重复读三种错误的产生原因死锁的原因死锁的原因1. 并发调度与控制原理并发调度与控制原理事务调度事务调度是指系统执行事务指令的时间顺序。有串行调度和并发是指系统执行事务指令的时间顺序。有串行调度和并发调度两种。调度两种。串行调度:串行调度:执行完一个事务才开始执行下一个事务执行完一个事务才开始执行下一个事务。优点:能确保数据的一致性不被破坏;优点:能确保数据的一致性不被破坏;缺点:在多用户并发的情形下,效率较低。缺点:在多用户并发的情形下,效率较低。并发调度:并发调度:多个事务可以同时执行多个事务可以同时执行。优点:提高系统吞吐量;优点:提高系统吞吐量;缺点:可能会破坏数据的一致性。缺点:可能
3、会破坏数据的一致性。事务调度例子事务调度例子串行调度1思考:调度的结果是否保证了数据一致性(数据平衡)?事务调度例子事务调度例子 串行调度2思考:调度的结果是否保证了数据一致性?事务调度例子事务调度例子 并发调度1思考:调度的结果是否保证了数据一致性?思考:T1、T2读取的是否为对方修改过的数据?事务调度例子 并发调度2思考:调度的结果是否保证了数据一致性?思考:T1、T2读取的是否为对方修改过的数据?并发控制的任务并发控制的任务并发控制的任务保证事务的并发调度是正确的(保证隔离性/可串行化效果等价于某个串行调度)保证数据一致性不会被破坏封锁机制封锁机制封锁的概念封锁的的基本类封锁的的相容矩封
4、锁的概念封锁的概念封锁一个事务在对某个数据对象(关系、元组等)进一个事务在对某个数据对象(关系、元组等)进行操作前,可向系统申请对其加锁行操作前,可向系统申请对其加锁对某个数据对象加锁锁,其其事务务不不对对某个数据对象加锁锁,其其事务务不不对这个数据对象进行某些操作,直到原来加锁的这个数据对象进行某些操作,直到原来加锁的事务释放锁为止事务释放锁为止封锁的的基本类封锁的的基本类封锁的的基本类X锁,又称写锁,或排其锁一个事务对数据对象A进行修改操作前,给A加上X锁。加上X锁锁,其其任何事务都不不再对A加任何本类的锁,直到释放A上的X锁为止S锁,又称读锁,或共享锁一个事务对数据对象A进行读取操作前,
5、给A加上S锁。加上S锁锁,其其事务不再对A加S锁,但不不加X锁,直到释放A上的S锁为止封锁的的相容矩封锁的的相容矩封锁的的相容矩Y=Yes,的相的请求N=No,不的相的请求封锁协议封锁协议封锁协议事务对数据对象加锁时,还需要遵守某些规则,包括:何时加锁,何时释放。称这些规则为封锁协议(Locking Protocol)几种封锁协议一级封锁协议二级封锁协议三级封锁协议一级封锁协议一级封锁协议一级封锁协议若事务对A做的是修改操作,则要求首先对其加X锁(第一次read/write之前),并且直到事务结束才不释放X锁(commit或rollback锁)若事务对A做的是读取操作,则没有任何要求(加锁/不
6、加锁都可以)一级封锁协议可可解丢失修改的问题丢失修改的问题思考:Why?分析:没有事务不够修改,其其事务正在修改,还未提交的数据一级封锁协议一级封锁协议一级封锁协议的例子事务T1 符合一级封锁协议事务的隔离性级别:丢失修改事务的隔离性级别:丢失修改丢失修改的并发调度二级封锁协议二级封锁协议二级封锁协议一级封锁协议若事务对A做的是读取操作,则要求首先对其加S锁(第一次read之前)。读操作锁可在任意时刻释放S锁二级封锁协议可可解读脏数据的问题可可解读脏数据的问题思考:Why?没有事务不够读取其其事务正在修改,还未提交的数据事务的隔离性级别:读事务的隔离性级别:读 “脏脏”数据数据读“脏”数据的并
7、发调度三级封锁协议三级封锁协议 三级封锁协议一级封锁协议若事务对A做的是读取操作,则要求首先对其加S锁(第一次read之前),且直到事务结束才不释放S锁(commit或rollback锁)三级封锁协议可可解不可重复读的问题可可解不可重复读的问题思考:Why?没有事务不够修改其其事务正在读取的数据事务的隔离性级别:不可重复读事务的隔离性级别:不可重复读不可重复读的并发调度T3(R2) )-R3死锁死锁事务号事务号占有资源号占有资源号请求资源号请求资源号T1R1R2T2R3R1,R2T3R2R3T1(R1)-R2T2(R3) )-R2,R1封锁带来的问题封锁带来的问题-死锁死锁所有事务都被封锁了一
8、些数据对象,并的互等待对方释放另一些数据对象以便对其封锁,结果所有事务都不不结束,则发生死锁。死锁死锁死锁发生的条件 互斥条件:事务请求对资源的独占控制; 等待条件:事务已持有一定资源,又去申请并等待其他资源; 非抢占条件:直到资源释放持有其的事务释放之前,不可不将该资源强制从持有其的事务夺去; 循环等待条件:存在事务的互等待的等待图;定理:在条件 成立的前提下,条件是死锁存在的充分必要条件可解死锁的方法可解死锁的方法预防死锁 预先占据所需的全部资源,要么一次全部封锁要么不封锁; 缺点:难预知需要封锁哪些数据并且数据使用率低;所有资源预先排序:事务按规定顺序封锁数据;使用抢占与事务回滚:给每个事务分配一个时间戳,若事务T2所申请的锁已经被T1持有,可以比较T1与T2的时间戳,来解定是否回滚T1,并将T1释放的锁授予T2;可解死锁的方法可解死锁的方法死锁检测和恢复超时法 如果等待封锁的时间超过限时,则撤消该事务等待图法如果发现图中存在回路,则表示系统中出现了死锁 T2T1T4T3T3T1T2T410.6 SQL Server10.6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川省绵阳市北川羌族自治县2024-2025学年八年级上学期1月期末物理试题(无答案)
- 280道法律常识题(含答案)
- 江苏省苏州市姑苏区2024-2025学年九年级上学期期末质量监测历史卷(含答案)
- 性病防治知识培训课件
- 20亿发一体射钉生产线建设项目可行性研究报告写作模板-申批备案
- 物业民法典知识培训课件
- 2024年中职计算机教学计划
- 2025年度MCN机构艺人经纪与粉丝经济合作合同3篇
- 2024铺面装修与全生命周期成本管理合同3篇
- 福建省南平市建阳漳墩中学2021年高二数学理月考试卷含解析
- 机器人论文3000字范文
- 中国保险行业协会-2022年度商业健康保险经营数据分析报告
- 新人教版小学五年级数学上册知识点归纳总结
- 四年级上册口算、竖式计算、脱式计算
- 肾内科降低透析器凝血发生率品管圈PDCA成果汇报
- 回族做礼拜的念词集合6篇
- 台区线损综合分析台区线损分类及计算方法
- 辩论赛医术更重要
- 保密组织机构及人员职责
- 竞争性磋商评分细则
- 警用无人机考试题库(全真题库)
评论
0/150
提交评论