第十一章 并发控制[精选].pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十一章 并发控制 主要内容 11.1 并发控制概述 11.2 封锁 11.3 活锁和死锁 11.4 并发调度的可串行性 11.5 两段锁协议 11.6 封锁的粒度 11.1 并发控制概述 多事务执行方式 (1)事务串行执行 (2)交叉并发方式 (3)同时并发方式 并发 是指在单处理机上,利用分时方法实行多个事务同时做。 事务并发执行带来的问题 可能会存取和存储不正确的数据,破坏事务的隔离性和一致性 DBMS必须提供并发控制机制 DBMS的并发控制子系统 保证事务的隔离性 保证事务的一致性 对并发操作进行正确调度 并发操作带来的问题1---丢失更新 并发操作带来的问题3---读脏数据 并发控制就是用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,从而避免造成数据的不一致性。 11.2 封锁 封锁是实现并发控制的一个主要技术。 锁(Lock) 是一个与数据项相关的变量,对可能应用于该数据项上的操作而言,锁描述了该数据项的状态。 两种封锁: - 排他型(Exclusive)封锁(简称:X锁) - 共享型(Share)封锁(简称: S锁) X锁(排它锁) 排它锁又称为写锁 若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。 X锁的操作 Xlock A:表示事务对数据A加X锁,并读数据A unlock A:表示事务要解除对数据A的X锁 X锁 PX协议: 使用X锁的规则称为PX协议。 任何企图更新记录R的事务必须先执行“Xlock R”操作,以获得对R的X锁,才能读或写记录R;如果未获准X锁,那么这个事务进入等待队列,一直到获准X锁,事务才能继续做下去。 PXC协议 X锁的解除操作应该合并到事务的结束(COMMIT或ROLLBACK)操作中 。引入此规则,PX协议成为PXC协议。 S锁(共享锁) S锁定义 若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A。 其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。 操作 Slock A 表示事务对数据A加S锁,并读数据。 Unlock A 表示事务要解除对数据A的S锁。 封锁的相容矩阵 例:使用X锁封锁解决数据丢失 11.3 活锁和死锁 封锁技术可以有效地解决并行操作的一致性问题,但也带来一些新的问题。 死锁 活锁 1. “活锁” 2. “死锁” 解决死锁的方法 两类方法 1) 预防死锁 2)死锁的诊断与解除 1)死锁的预防 预防死锁的发生就是要破坏产生死锁的条件。 预防死锁的方法 一次封锁法 顺序封锁法 一次封锁法 要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行 一次封锁法存在的问题 扩大封锁范围 难于事先精确确定封锁对象 顺序封锁法 顺序封锁法是预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。 顺序封锁法存在的问题 维护成本高 难于实现 2) 死锁的诊断与解除 允许死锁发生 解除死锁 由DBMS的并发控制子系统定期检测系统中是否存在死锁 一旦检测到死锁,就要设法解除 “死锁的诊断” “死锁的解除” 死锁测试程序: 选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有的锁,使其它事务能继续运行下去。 11.4 并发调度的可串行性 一、什么样的并发操作调度是正确的 二、如何保证并发操作的调度是正确的 事务的调度 事务的执行次序称为“调度” 串行调度 如果多个事务依次执行,则称为事务的串行调度(Serial Schedule) 并发调度 如果利用分时的方法,同时处理多个事务,则称为事务的并发调度(Concurrent Schedule) 一、什么样的并发操作调度是正确的 计算机系统对并行事务中并行操作的调度是的随机的,而不同的调度可能会产生不同的结果。 将所有事务串行起来的调度策略一定是正确的调度策略。 以不同的顺序串行执行事务也有可能会产生不同的结果,但由于不会将数据库置于不一致状态,所以都可以认为是正确的。 几个事务的并行执行是正确的,当且仅当其结果与按某一次序串行地执行这些事务时的结果相同。这种并行调度策略称为可串行化(Serializable)的调度。 可串行性是并行事务正确性的唯一准则 例:现在有两个事务,分别包含下列操作:   事务1:读B;A=B+1;写回A;

文档评论(0)

dart001 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档