网站大量收购闲置独家精品文档,联系QQ:2885784924

第9章_事务调度与并发控制.doc

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

第9章 事务调度与并发控制 9.1事务与事务调度 9.1.1 事务的概念 1、? 事务是构成数据库应用中一个独立逻辑工作单元的操作的集合,也是访问并可能更新数据库中各种数据项的一个程序执行单元。数据库系统通过执行各种事务实现对数据库数据的操作,管理和执行事务是DBMS的基本功能。 9.1.2 事务的特性(ACID特性) 1、原子性(Atomicity) 一个事务对数据库的所有操作是一个不可分割的工作单元,这些操作要么全部执行,要么一个也不执行。 2、? 一致性(Consistency) 当一个事务独立执行时,其执行结果应维护数据库的一致性,即数据库不会因事务执行而受到破坏。数据库满足全部完整性约束,处于正确的状态; 3、? 隔离性(Isolation) 当多个事务并发执行时,系统应保证一个事务的执行结果不受其他事务的干扰,事务并发执行结果与这些事务串行执行时的结果是一样的; 4、? 持久性(Durability) 一个事务一旦成功完成全部操作,则它对数据库的所有更新就永久地反映在数据库中,即使以后数据库发生了故障; 9.1.3 事务调度 1、? 一个事务中各操作的执行顺序和执行时机一方面取决于事务自身内部逻辑,另一方面也受DBMS中事务调度机制的控制。当多个事务并发执行时,DBMS必须采用合适的并发调度机制合理安排各个事务执行顺序,以保证事务的ACID特性。 2、? 调度分为串行调度和并发调度,串行调度的特点是一个事务的所有操作都执行完后才开始执行另一事务,不存在事务操作的交叉执行;不同事务操作的交叉执行称为并发调度,DBMS交叉执行来自多个事务的各个操作,以提高数据库系统的性能。 9.1.4 可串行化调度 1、? 事务的串行调度能够产生正确的结果,但执行效率低,如果并发调度S等价于某一定义在TS上的串行调度,那么S称为可串行化调度; 2、? 给定两个定义在事务集TS上的的调度S和S’,如果可以通过交换S中一系列非冲突操作的执行顺序将S转换为S’,则称S与S’是冲突等价。 3、? 如果定义在事务TS上的并发调度S冲突等价于事务集TS上的某个串行调度S’,则称S是冲突可串行的。 4、? 在引入冲突可串行概念后,判断一个并发调度是否正确可以归结为判断该调度是否冲突可串行的。 9.2 基于锁的并发控制技术 9.2.1 锁的概念 1、? 对数据库系统中每个可能被多个事务并发访问的数据项设置锁,锁代表了对该数据项的访问权限。即事务T在访问数据项Q前须向DBMS申请获得设置在Q上的锁,如成功,则T获得对Q的访问权,T对Q操作完成后,释放所占用的锁,允许其他事务获得该锁并访问Q,在T释放设置在Q上的锁前,其他事务不能访问Q。 2、? 锁的类型有两种: (1)?????? 互斥锁(X锁):若T获得Q上的X锁,则T可以对Q读写,其他事务不能再对Q进行任何操作,直到T释放Q上的锁; (2)?????? 共享锁(S锁):若T获得Q上的S锁,则T可以对Q进行读取操作,但不可以修改,同时,允许其他事务再申请获得Q上的S锁,与T并行读取Q,但在T释放Q上的S锁前,其他事务不能对Q做任何修改; 9.2.2 加锁协议 1、? 保证数据一致性的三级加锁协议: (1)?????? 1级加锁协议要求事务T在修改数据项Q之前必须先对Q加X锁,直到事务结束才释放,事务结束包括正常结束和非正常结束,但事务如果只对Q读而不写,则不需对Q加锁; (2)?????? 2级加锁协议是在1级加锁协议基础上,要求T在读取Q前必须先对其加S锁,读完后立即释放S锁; (3)?????? 3级加锁协议是在1级加锁协议基础上,要求在读取Q前必须先对其加S锁,但需等到事务结束后才释放S锁。 9.2.3 两阶段锁协议 1、? 两阶段锁(2PL)基本原理如下: (1)?????? 每个事务的执行过程划分为两个阶段,加锁阶段和解锁阶段; (2)?????? 在加锁阶段,事务可以申请获得任何数据项上的任何类型的锁,但是不允许释放任何锁; (3)?????? 在解锁阶段,事务可以释放任何数据上的任何类型的锁,但是不能再申请任何的锁; (4)?????? 每个事务开始执行后就进入加锁阶段,当第一次释放锁后,即进入解锁阶段。 9.2.4 锁粒度 1、? 施加X锁和S锁的数据项大小称为锁粒度。 2、? 锁粒度越大,系统中可以被锁的数据项就越少,事务的并发执行度也越低,但同时系统的开销也小,相反,当锁粒度越小时,事务的并发度高,但系统开销也较大; 9.3 死锁处理 9.3.1 死锁预防 1、? 一次加锁法 该方法要求每个事务在开始时必须将需要访问的数据项全部加锁,否则不能执行下去,也就是要求事务必须一次性地获得对需要访问的全部数据项的访问权; 该方法的缺点是: (1)?????? 多个数据项会被一

文档评论(0)

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

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

1亿VIP精品文档

相关文档