- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
An Introduction to Database System 第十一章 并发控制 11.1 并发控制概述 11.2 封锁 11.3 活锁和死锁 11.4 并发调度的可串行性 11.5 两段锁协议 11.6 封锁的粒度 11.7 小结 11.1 并发控制概述 多事务执行方式 (1) 事务串行执行 (2) 交叉并发方式(interleaved concurrency) (3) 同时并发方式(simultaneous concurrency) 数据不一致实例:飞机订票系统 并发操作带来的数据不一致性 丢失修改 (lost update) 不可重复读 (non-repeatable read) 读“脏”数据 (dirty read) 三类不可重复读 事务1读取某一数据后: 1 .事务2对其做了修改,当事务1再次读该数据时,得到与前一次不同的值。 2. 事务2删除了其中部分记录,当事务1再次读取数据时,发现某些记录神密地消失了。 3. 事务2插入了一些记录,当事务1再次按相同条件读取数据时,发现多了一些记录。 后两种不可重复读有时也称为幻影现象(phantom row) 读“脏”数据 事务1修改某一数据,并将其写回磁盘。 事务2读取同一数据后,事务1由于某种原因被撤消,这时事务1已修改过的数据恢复原值。 事务2读到的数据就与数据库中的数据不一致,是不正确的数据,又称为“脏”数据。 11.2 封锁 一、什么是封锁 二、基本封锁类型 排它锁(eXclusive lock,简记为X锁)又称为写锁 三、封锁协议 在运用X锁和S锁对数据对象加锁时,需要约定一些规则:封锁协议(Locking Protocol) 何时申请X锁或S锁 持锁时间、何时释放 不同的封锁协议,在不同的程度上为并发操作的正确调度提供一定的保证; 常用的封锁协议:三级封锁协议。 一级封锁协议 事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放该锁。 二级封锁协议 一级封锁协议+事务T在读取数据R前必须先加S锁,读完后即可释放S锁。 三级封锁协议 一级封锁协议 + 事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放 封锁协议小结 三级协议的主要区别 什么操作需要申请封锁 何时释放锁(即持锁时间) 11.3 活锁和死锁 封锁技术可以有效地解决并行操作的一致性问题,但也带来一些新的问题。 11.3.1 活锁 11.3.2 死锁 1. 死锁的预防 产生死锁的原因是两个或多个事务都已封锁了一些数据对象,然后又都请求对已为其他事务封锁的数据对象加锁,从而出现死等待。 预防死锁的发生就是要破坏产生死锁的条件 2. 死锁的诊断与解除 允许死锁发生,由DBMS的并发控制子系统定期检测系统中是否存在死锁,一旦检测到死锁,就要设法解除。 11.4 并发调度的可串行性 一、可串行化调度 二、冲突可串行化调度 具有什么性质的调度是可串行化?如何判断调度是可串行化的调度? 冲突操作是指不同的事务同时对同一个数据的读写操作和写写操作: Ri(X)与Wj(X) Wi(X)与Wj(X) 是冲突操作,其他操作是不冲突操作。 一个调度Sc在保证冲突操作次序不变的情况下,通交换两个事务不冲突操作的次序得到的另一个调度Sc`,如果 Sc`是串行的,称Sc为冲突可串行化的调度。[如例如4] 一个调度是冲突可串行化的,一定是可串行化的调度。——是充分条件 保证并发操作调度正确性的方法 封锁方法:两段锁(Two-Phase Locking,简称2PL)协议 11.5 两段锁协议 两段锁协议的内容 1. 在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁 2. 在释放一个封锁之后,事务不再获得任何其他封锁。 “两段”锁的含义——事务分为两个阶段 第一阶段是获得封锁,也称为扩展阶段; 第二阶段是释放封锁,也称为收缩阶段。 例: 事务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不遵守两段协议。 两段锁协议与防止死锁的一次封锁法的异同: 一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行,因此一次封锁法遵守两段锁协议 但是两段锁协议并不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁。 11.6 封锁的粒度 一、什么是封锁粒度 X锁和S
您可能关注的文档
最近下载
- 求阴影面积的常用方法.pdf VIP
- 2024年广东省深圳市盐田区梅沙街道招聘社区工作者真题含答案详解.docx VIP
- 英、美、中三国会计师事务所组织形式演变研究.pdf VIP
- 工会经费管理与内部审计问题分析及改进建议.docx VIP
- 电气管理课件.pptx VIP
- 2025中国现代文学史自考真题及答案 .pdf VIP
- 2025努力锻造忠诚干净担当的新时代政法铁军党课PPT课件.pptx VIP
- 富士达电梯MLVF-T无机房(CP40)电气原理图.pdf VIP
- 国家建筑标准设计图集-12S101 矩形给水箱.pdf VIP
- Pico Pico Neo 3 VR头盔 Pico Neo 3 0207 用户手册.pdf
文档评论(0)