数据库 Chp8_Concurrency.pdf

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库 Chp8_Concurrency

第八章 并发控制 • 数据库是一个共享资源,可以供多个用户使用。为 充分利用系统机资源,并使每个用户获得最快的响 应,应该允许多个事务并行执行 • 事务并行执行方式有两种: 8交叉并发方式(Interleaved Concurrency) 8同时并发方式(Simultaneous Concurrency) • 事务的并发操作必须加以控制,否则就可能导致数 据的不正确的存取,破坏数据库的一致性 并发控制概述 • 飞机订票系统 8甲售票点(甲事务)读出某航班的机票余额A , 设A =16; 8乙售票点(乙事务)读出同一航班的机票余额A ,也为16; 8甲售票点卖出一张机票,A =A-1 ,甲事务将15写 回数据库; 8乙售票点也卖出一张机票,A =A-1 ,乙事务也将 15写回数据库; • 结果:明明卖出两张机票,数据库中机票余额 却只减少1。 并发操作带来三类数据不一致性 • 丢失修改(Lost Update) 8RrWw • 不可重复读(Non-Repeatable Read) 8RwR (Phantom Row 幻影现象) 8T1读T2修改 T1再读与先前不对 • 读“脏”数据(Dirty Read) 8WrW 8读取中途未提交数据(回滚前的数据) 并发操作带来三类数据不一致性 T1 T2 T1 T2 T1 T2 ①读A=16 ①读A=50 ①读C=100 读B=100 C←C*2 和=150 写回C=200 ② 读A=16 ② 读B=100 ② 读C=200 B←B*2 ③A←A-1 写回B=200 写回15 ③读A=50 ③ ④ A←A-1 读B=200 ROLLBACK 写回15 和=250 C恢复为100 • (a)丢失修改 (b)不可重复读 (c)读“脏”数据 封锁(Locking) • 封锁是实现并发控制的一个非常重要的技术。所谓 封锁就是事务T在对某个数据对象(如表、记录等) 操作之前,先向系统发出请求,对其加锁。在事务T 释放它的锁之前,其它事务不能读取或更新此数据 对象。 • 基本的封锁类型有两种: 8排它锁(Exclusive Locks,简称X锁) 8共享锁(Share Locks,简称S锁) 封锁的两种基本类型 • 排它锁,又称写锁 8若事务T对数据对象A加上X锁,则只允许T读取和修改A , 其他任何事务都不能再对A加任何类型的锁,直到T释放A 上的锁。这就保证了其他事务在T释放A上的锁之前不能再 读取和修改A 。 • 共享锁,又称读锁 8若事务T对数据对象A加上S锁,则事务T可以读A但不能修 改A ,其他事务只能再对A加S锁,而不能加X锁,直到T释 放A上的S锁。这就保证了其他事务可以读A ,但在T释放A 上的S锁之前不能对A做任何修改。 封锁类型的相容矩阵 T2 X

文档评论(0)

cgtk187 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档