华中科技大学数据库课件第11篇 并发控制.ppt

华中科技大学数据库课件第11篇 并发控制.ppt

  1. 1、本文档共94页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第11章 并发控制 11.1 并发控制概述 11.2 封锁 11.3 封锁协议 11.4 活锁和死锁 11.5 并发调度的可串行性 11.6 两段锁协议 11.7 封锁的粒度 11.8 SQL Server的并发控制 11.9 小结 11.1 并发控制概述 并发控制: 保证多用户并发操作数据库中信息时的正确性、一致性所采取的措施。 事务的调度 事务的一次执行顺序称为一个调度,表示事务的指令在系统中执行的时间顺序 一组事务的调度必须保证 包含了所有事务的操作指令 一个事务中指令的顺序必须保持不变 11.1 并发控制概述 串行调度 在串行调度中,属于同一事务的指令紧挨在一起执行对于有n个事务的事务组,可以有n!个有效调度 并行(发)调度 在并行调度中,来自不同事务的指令可以交叉执行.当并行调度等价于某个串行调度时,则称它是可串行化的、正确的 11.1 并发控制概述 串行 vs 并行 基本比较 并行事务会破坏数据库的一致性 串行事务效率低 并行的优点 一个事务由不同的步骤组成,所涉及的系统资源也不同。这些步骤可以并发执行,以提高系统的吞吐量 系统中存在着周期不等的各种事务,串行会导致难于预测的时延。如果各个事务所涉及的是数据库的不同部分,采用并发会减少平均响应时间 核心问题 在保证一致性的前提下最大限度地提高并发度 11.1 并发控制概述 并发操作可能带来的数据不一致性 丢失更新(Lost Update) 不可重复读(Non-Repeatable Read) 读“脏”数据(Dirty Read) 11.1 并发控制概述 丢失更新 两个以上事务从DB中读入同一数据并修改,其中一事务(后提交的事务)的提交结果破坏了另一事务(先提交的事务)的提交结果,导致先前提交事务对DB的修改被丢失。 11.1 并发控制概述 丢失更新举例:事务T1对数据库的修改丢失了 11.1 并发控制概述 不可重复读 不可重复读是指事务1读取数据后,事务2执行更新操作,使事务1无法再现前一次读取结果。具体地讲,不可重复读包括三种情况: 事务2修改了事务1所读数据,当事务1再次读该数据时,得到与前一次不同的值。 事务1按一定条件从数据库中读取某些数据记录后,事务2删除了其中部分记录,当事务1再次按相同条件读取数据时,发现某些记录神秘地消失了。 事务1按一定条件从数据库中读取某些数据记录后,事务2插入了一些记录,当事务1再次按相同条件读取数据时,发现多了一些记录。 11.1 并发控制概述 不可重复读举例(1) 11.1 并发控制概述 不可重复读举例(2) 11.1 并发控制概述 读“脏”数据 事务1修改某一数据,并将其写回磁盘 事务2读取同一数据后,事务1由于某种原因被撤消.,这时事务1已修改过的数据被恢复原值 事务2读到的不稳定的瞬间数据就与数据库中的数据不一致,是不正确的数据,又称为“脏”数据。 11.1 并发控制概述 产生三类数据不一致的原因 并发操作破坏了事务的隔离性 必须对并发的一事务加以控制才能避免此类现象 并发控制机制的任务 对并发操作进行正确调度 保证事务的隔离性 保证数据库的一致性 并发控制的方法 加锁 乐观假设 时间戳 11.1 并发控制概述 SQL的隔离级别 事务准备接受不一致数据的级别称为隔离级别,隔离级别是一个事务必须与其它事务进行隔离的程度. 较低的隔离级别可以增加并发,但代价是降低数据的正确性。 较高的隔离级别可以确保数据的正确性,但可能对并发产生负面影响。 应用程序要求的隔离级别确定了 SQL Server 使用的锁定行为 11.1 并发控制概述 SQL的隔离级别(续) – 从低到高 可读未提交(Read Uncommitted) 允许读未提交的记录 可读提交(Read Committed) 只允许读已提交的记录,但不要求可重复读 可重复读(Repeatable Read) 只允许读取已提交的记录,并要求一个事务对同一记录的两次读取之间,其它事务不能对该记录进行更新 可串行化(Serializable) 一个调度的执行必须等价于一个串行调度的结果 第11章 并发控制 11.1 并发控制概述 11.2 封锁 11.3 封锁协议 11.4 活锁和死锁 11.5 并发调度的可串行性 11.6 两段锁协议 11.7 封锁的粒度 11.8 SQL Server的并发控制 11.9 小结 11.2 封锁 封锁是实现并发控制的一个非常重要的技术 封锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁 加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。 DBMS通常提供了多种类型的封锁。一个事务对某个数据对象加锁后究竟拥有

文档评论(0)

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

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

1亿VIP精品文档

相关文档