数据库11-并发控制讲述.ppt

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

An Introduction to Database System 两段锁协议(续) 两段锁协议与防止死锁的一次封锁法 一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行,因此一次封锁法遵守两段锁协议 但是两段锁协议并不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁 An Introduction to Database System 两段锁协议(续) [例] 遵守两段锁协议的事务发生死锁 T1 Slock B R(B)=2 ? ? Xlock A 等待 等待 T2 ? ? Slock A R(A)=2 ? Xlock A 等待 遵守两段锁协议的事务可能发生死锁 * An Introduction to Database System 数据库系统概论 An Introduction to Database System 第十一章 数据库恢复技术 An Introduction to Database System 并发控制机制的提出 当多个用户并发地存取数据库时可能出现多个事务同时存取同一数据的情况,并发控制机制将对这些并发操作加以控制以保证每个事务的ACID特性,确保数据库的一致性。 并发控制机制是衡量某DBMS系统性能的指标之一。 An Introduction to Database System 例子 这种数据库的不一致是由并发操作引起的。 并发操作引起的数据不一致性包括:丢失修改、不可重复读、读脏数据和幻读。 机票数量A A=16 读 读 A=A-1 A=A-1 A=15 A=15 售票点 售票点 A=16 A=16 出售1 出售1 事务T1 事务T2 An Introduction to Database System 并发操作引起的丢失修改 丢失修改 事务T1对数据的修改被事务T2的修改覆盖。 T1 T2 ① R(A)=16 ② R(A)=16 ③ A←A-1 W(A)=15W ④ A←A-1 W(A)=15 An Introduction to Database System 并发操作引起的不可重复读 不可重复读 事务T1读取某一数据后,事务T2对其做了修改,当T1按同样条件再读时得到不同的值。 事务T1读取某些数据后,事务T2删除(或插入)了一些记录,当T1按同样条件再读时发现少(或多)了一些记录。 T1 T2 ① R(A)=50 R(B)=100 求和=150 ② R(B)=100 B←B*2 (B)=200 ③ R(A)=50 R(B)=200 和=250 (验算不对) An Introduction to Database System 并发操作引起的读脏数据 读脏数据 事务T1 修改了某数据并写回磁盘,事务T2 读取了同一数据后,T1由于某种原因被撤销,被修改的值复原,此时T2读到的数据与数据库中的数据不一致。 T1 T2 ① R(C)=100 C←C*2 W(C)=200 ② R(C)=200 ③ROLLBACK C恢复为100 幻读 事务 A 按某条件 C 查询一组数据,随后事务 B 增加 insert 满足条件 C 的数据,或修改 update 条件 C 相关的数据,使得事务 A 按原条件 C 再次查询的结果不一致。 事务 A 事务 B 数据 T Select ? where t=100 Insert (t=100) Commit 虚行:事务A在重复读T之前认为满足条件C的数据不变;而实际上已改变 Select ? where t=100 ? An Introduction to Database System 小结 产生上述不一致性的主要原因 并发操作破坏了事务的隔离性,事务间相互干扰 并发控制的主要技术:封锁 An Introduction to Database System 11.2 封锁 概念 事务T在对某个数据对象(如数据库、表、记录等)操作之前,首先向系统发出加锁请求以便获得对数据对象相应的控制。 在事务T释放它所获得的锁之前,其他事务不能更新此数据对象。 An Introduction to Database System 锁的类型 排它锁(eXclusive lock):写锁 若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。 共享锁(Share lock):读锁 若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。 An Introduction to Database System 锁的相容矩阵 Y:相容的请求 N:不相

文档评论(0)

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

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

1亿VIP精品文档

相关文档