数据库第4章并发控制.pptVIP

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 并发控制 本章要点 并发操作及影响 理解事务的概念 并发操作的可串行性 并发控制及实现技术 序言 事务并行地运行可充分利用系统资源 事务是构成单一逻辑工作单元的操作集合,是并发控制的基本单位. 多用户数据库系统中允许多个用户同时使用数据库,即在同一时刻可能有多个事务并行运行. 举例:并发控制 这种数据库的不一致是由并发操作引起的 事务的开始与结束 1.开始事务 用“BEGIN TRANSACTION” 定义事务的开始 2.结束事务 结束事务通常以下两种方式: (1)成功:COMMIT (2)不成功:ROLLBACK 事务的状态 事务的执行状态分为5种: ⑴ 活动状态 ⑵ 部分提交状态 ⑶ 失败状态 ⑷ 中止状态 ⑸ 提交状态 4.2事务调度与并发控制 事务的调度 事务调度的概念: ⑴ 调度(Schedule):事务的执行次序。 ⑵ 串行调度(Serial Schedule):多个事务依次串行执行,且只有当一个事务的所有操作都执行完后才执行另一个事务的所有操作。 ⑶ 并行调度(Concurrent Schedule):利用分时的方法处理多个事务。 并发控制 当多个事务中的多个事务并发执行时,有可能无法保证事务之间的隔离性,并破坏数据库的一致性、正确性。因此,DBMS的一个重要任务就是要有一种机制去保证事务在并发的存取和修改数据的时候的完整性不被破坏。 并发控制机制就是一种在多用户环境下对数据库进行并发操作进行规范的机制,是衡量DBMS性能的重要标志之一。 并发控制能给数据库的操作带来很大好处,最明显的有以下两点: (1)改善系统的资源利用率 (2)改善短事务的响应时间 数据的不一致性 经过大量实例分析,发现并发操作的不正确调度可能会带来三种数据不一致性。 ⒈ 丢失修改 ⒉ 读“脏”数据 ⒊ 不可重复读 并发操作引起的丢失修改 丢失修改 事务T1对数据的修改被事务T2的修改覆盖 并发操作引起的读脏数据 读脏数据 事务T1 修改了某数据并写回磁盘,事务T2 读取了同一数据后,T1由于某种原因被撤销,被修改的值复原,此时T2读到的数据与数据库中的数据不一致 并发操作引起的不可重复读 不可重复读 事务T1读取某一数据后,事务T2对其做了修改,当T1按同样条件再读时得到不同的值 事务T1读取某些数据后,事务T2删除(或插入)了一些记录,当T1按同样条件再读时发现少(或多)了一些记录 小结 产生上述三类不一致性的主要原因 并发操作破坏了事务的隔离性,事务间相互干扰 并发控制的主要技术 封锁技术 (Locking) 可串行化准则 假设事务都是串行运行的,一个事务结束(提交或者退回)后,另一个事务才能开始运行,那么就可以认为所有事务的运行结果都是正确的。尽管这些事务假如以不同的顺序运行,可能会对数据库造成不同的影响。 以此为判断标准,我们将可串行化的并发调度当作判断事务并发操作的唯一正确性准则。 即:假如并发操作调度的结果与按照某种顺序串行执行这些操作的结果相同,就认为并发操作是正确的。 [例] 并发事务的不同调度策略:假设A,B初值均为2, T1: 读B; A=B+1; 写回A; T2: 读A; B=A+1; 写回B 4.3 封锁管理 封锁机制 1.封锁的定义 所谓封锁指的是事务T对某个数据对象(如关系、记录等)进行操作以前,先请求系统对其加锁,成功加锁之后该事务就对该数据对象有了控制权,在事务T释放它的锁之前,其他的事务不能更新此数据对象,只有事务T对其解锁之后,其他的事务才能更新它。 有两种基本的封锁类型: 排它锁(X锁,写锁): 若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁 共享锁(S锁,读锁): 若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁 2.封锁的粒度 封锁的粒度即封锁对象的大小,如 逻辑单元:属性、元组、关系、索引、数据库等 物理单元:页、块等 封锁粒度对并发控制的影响 封锁粒度越大,并发度越小,系统封锁开销越小; 封锁粒度越小,并发度越高,系统封锁开销越大; 活锁和死锁 活锁 举例说明: 事务T1封锁某数据后,事务T2请求封锁未获得并等待,而T1释放锁后,事务T3请求封锁并获得,T3释放锁后,事务T4请求封锁并获得……T2可能永远等待 解决办法:采用先来先服务的策略 死锁 举例说明: 事务T1和T2各自封锁了数据R1和R2后,又各自请求封锁R2和

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档