第8章 并发控制.ppt
《第8章 并发控制.ppt》由会员分享,可在线阅读,更多相关《第8章 并发控制.ppt(96页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第8章章 并发控制并发控制Silberschatz,Korth and Sudarshan16.2Database System Concepts 3rd Edition主要内容主要内容nIntroduction to IsolationnDependency Model of IsolationnTransaction Dependency Relationsn基于锁的协议基于锁的协议n基于时间戳的协议基于时间戳的协议n基于验证的协议基于验证的协议n多粒度多粒度n多版本多版本n死锁处理死锁处理n插入与删除操作插入与删除操作n索引结构中的并发索引结构中的并发Silberschatz,Kort
2、h and Sudarshan16.3Database System Concepts 3rd EditionIntroduction to Isolationn系统状态系统状态vs.不变式不变式(invariant)“如果向如果向EMP 插入一个记录,相应地必须向插入一个记录,相应地必须向ZIP 插入一条记录。插入一条记录。”“如果如果EMP的一个副本被更新的一个副本被更新,其余副本也必须以同样的方式被更新。其余副本也必须以同样的方式被更新。”“如果一个程序改变了帐户余额,有关的修改必须记录在案。如果一个程序改变了帐户余额,有关的修改必须记录在案。”n如果满足所有这些不变式,如果满足所有这些
3、不变式,则则系统状态被认为是一致的系统状态被认为是一致的n通常一个状态在向另外一个新的且一致性状态转换时,通常一个状态在向另外一个新的且一致性状态转换时,可能会出现短暂的不一致可能会出现短暂的不一致n例如,例如,向向EMP 表插入一条记录,不可能使表插入一条记录,不可能使EMP 以及以及ZIP 索引的插入完全同步索引的插入完全同步n几乎任何一个涉及多个对象更新的变换,都会使它们之几乎任何一个涉及多个对象更新的变换,都会使它们之间有短暂的不一致性间有短暂的不一致性Silberschatz,Korth and Sudarshan16.4Database System Concepts 3rd Ed
4、itionIntroduction to Isolationn为了应付这些短暂的不一致性,为了应付这些短暂的不一致性,将多个相关将多个相关操作以组的方式形成事务,以操作以组的方式形成事务,以保持一致性的约束保持一致性的约束.一个从一致性的系统状态开始的事务,其间会导致临时一个从一致性的系统状态开始的事务,其间会导致临时的不一致状态,但是在事务结束时系统会进入一个新的一致状态的不一致状态,但是在事务结束时系统会进入一个新的一致状态n事务是一致性的单位事务是一致性的单位,这这就就是事务是事务ACID特性中特性中的的C(一致性一致性)的含义的含义n如果事务是隔离地一一在运行,那么每一个事务可以知道其
5、上一个事务所如果事务是隔离地一一在运行,那么每一个事务可以知道其上一个事务所导致的一致性状态导致的一致性状态n但是,但是,如果多个事务并发执行,那么某些事务的输入和后续行为或许会不如果多个事务并发执行,那么某些事务的输入和后续行为或许会不一致,即使每一个隔离执行的事务都是正确的一致,即使每一个隔离执行的事务都是正确的,并发事务的执行必须加以控并发事务的执行必须加以控制以便正确的程序不会失效制以便正确的程序不会失效n这就是事务这就是事务ACID特性中特性中的的I(隔离性隔离性)的含义的含义Silberschatz,Korth and Sudarshan16.5Database System Co
6、ncepts 3rd EditionIntroduction to Isolationn实现隔离最简单的方式就是一次只运行一个程序实现隔离最简单的方式就是一次只运行一个程序(事务事务,前提是前提是:n如果所有的程序都很短小,如果所有数据可以集中存放如果所有的程序都很短小,如果所有数据可以集中存放在主存中,且如果所有的数据都由一个处理器来存取,在主存中,且如果所有的数据都由一个处理器来存取,这时没必要考虑并发来存取这时没必要考虑并发来存取这些程序可以简单地以这些程序可以简单地以顺序方式执行顺序方式执行n问题是,这些情况中包含了太多的问题是,这些情况中包含了太多的”如果如果”n因此,系统必须以某种
7、方式提供并发控制,保证隔离性,因此,系统必须以某种方式提供并发控制,保证隔离性,使之满足并发的第一法则使之满足并发的第一法则n人们已经尝试过许多种提供自动隔离的方法人们已经尝试过许多种提供自动隔离的方法n其中,一个公认可行的解决方案就是封锁其中,一个公认可行的解决方案就是封锁Silberschatz,Korth and Sudarshan16.6Database System Concepts 3rd EditionIntroduction to Isolationn对封锁方法,仍有一系列费解的问对封锁方法,仍有一系列费解的问题题n如果并发控制机制代价过高,会使得代价高于收益。通如果并发控制机
8、制代价过高,会使得代价高于收益。通常,复杂的算法实现起来和执行起来也比较复杂常,复杂的算法实现起来和执行起来也比较复杂n第二法则主张使用简单的算法第二法则主张使用简单的算法Silberschatz,Korth and Sudarshan16.7Database System Concepts 3rd EditionIntroduction to Isolationn最简单的封锁协议是给每个对象加一个锁。如果这个需要锁同时授最简单的封锁协议是给每个对象加一个锁。如果这个需要锁同时授于另外一个事务,该事务将等待这个锁被释放于另外一个事务,该事务将等待这个锁被释放n封锁是一种实现串行化的机制,这样就
9、确保任一时刻仅仅只有一个封锁是一种实现串行化的机制,这样就确保任一时刻仅仅只有一个事务在存取一个对象事务在存取一个对象n通过细化锁的粒度(锁覆盖的数据多少),可以提高并发度通过细化锁的粒度(锁覆盖的数据多少),可以提高并发度n锁的概念可以追溯到几千年以前,它是紧接着门之后的发明锁的概念可以追溯到几千年以前,它是紧接着门之后的发明n现在这个概念(思想)在操作系统领域里已经很普遍了现在这个概念(思想)在操作系统领域里已经很普遍了,在该领域在该领域中,锁又被称为中,锁又被称为:信号量(信号量(semaphores),),管程(管程(monitors)临界区(临界区(critical sections
10、),),串行重用资源(串行重用资源(serially reuseable reuseable resources)Silberschatz,Korth and Sudarshan16.8Database System Concepts 3rd EditionIntroduction to Isolationn事务系统对并发控制的主要贡献是,进一步提炼了原有事务系统对并发控制的主要贡献是,进一步提炼了原有的这些思想,纳入了自动封锁以及把事务的这些思想,纳入了自动封锁以及把事务undo/redo 算算法同封锁算法结合起来法同封锁算法结合起来n这种方法给应用程序开发者一个极简单的并发控制和异这种方法
11、给应用程序开发者一个极简单的并发控制和异常处理的模型常处理的模型n事务处理系统自动地申请加锁并且登录日志以维护事务处理系统自动地申请加锁并且登录日志以维护ACID 特性特性n应用程序设计人员可能疏忽并发控制问题,除非存在着应用程序设计人员可能疏忽并发控制问题,除非存在着许多事务存取同一个对象而引起的性能问题许多事务存取同一个对象而引起的性能问题,所谓的热点所谓的热点(hotspots hotspots)n隔离性理论是允许自动封锁而带来的重要结果隔离性理论是允许自动封锁而带来的重要结果Silberschatz,Korth and Sudarshan16.9Database System Conc
12、epts 3rd EditionDependency Model of Isolationn理解隔离性结果最简单的方式,是根据事务的输入和输理解隔离性结果最简单的方式,是根据事务的输入和输出来理解出来理解n事务要么读一个对象查看其状态,要么写一个对象改变事务要么读一个对象查看其状态,要么写一个对象改变对象的状态对象的状态n设想创建和消除对象只不过是改写其状态而已。以这种设想创建和消除对象只不过是改写其状态而已。以这种粗略的方式来看,事务可以看作是一连串对象的读写操粗略的方式来看,事务可以看作是一连串对象的读写操作作n两个不同事务对同一个对象的读操作不会破坏一致性,两个不同事务对同一个对象的读操
13、作不会破坏一致性,因为读操作不会改变对象的状态(假定其状态初始是一因为读操作不会改变对象的状态(假定其状态初始是一致的)致的)n因此,只有写操作有可能带来问题因此,只有写操作有可能带来问题Silberschatz,Korth and Sudarshan16.10Database System Concepts 3rd EditionDependency Model of Isolationn同一事务对同一个对象的两个写操作也不会违反同一事务对同一个对象的两个写操作也不会违反一致性,一致性,ACID特性假定事务知道它正在干什么特性假定事务知道它正在干什么nACID特性假定:如果事务隔离地运行,最
14、终会特性假定:如果事务隔离地运行,最终会正确地转换系统状态正确地转换系统状态n因此,只有两个并发事务之间同写操作有关联的因此,只有两个并发事务之间同写操作有关联的的交叉操才可能造成不一致性或是违背隔离性的交叉操才可能造成不一致性或是违背隔离性Silberschatz,Korth and Sudarshan16.11Database System Concepts 3rd EditionDependency Model of IsolationSilberschatz,Korth and Sudarshan16.12Database System Concepts 3rd EditionStat
15、ic vs.Dynamic AllocationSilberschatz,Korth and Sudarshan16.13Database System Concepts 3rd EditionStatic vs.Dynamic Allocationn动态分配系统中,每一个事务都被看作是一系列动态分配系统中,每一个事务都被看作是一系列的行为动作而不是输入输出集的行为动作而不是输入输出集n每个动作的请求都在其出现时按需调度。当一个每个动作的请求都在其出现时按需调度。当一个动作存取一个特定的对象时,对象被动态地分配动作存取一个特定的对象时,对象被动态地分配给事务给事务n例如,只有银行帐户记录和其它
16、的一些特别的事例如,只有银行帐户记录和其它的一些特别的事务将要存取的记录分配给该事务务将要存取的记录分配给该事务,出纳员才能运出纳员才能运行一个银行事务行一个银行事务n这样针对不同帐户的事务可以并发地且隔离地执这样针对不同帐户的事务可以并发地且隔离地执行行Silberschatz,Korth and Sudarshan16.14Database System Concepts 3rd EditionTransaction Dependency Relationsn图中显示了两个在对象图中显示了两个在对象e 上的事务上的事务T1 和和T2,所可能有,所可能有的三种读写执行序列操作的三种读写执行序
17、列操作READ-WRITE,WRITE-READ,WRITE-WRITEn没有没有READ-READ 依赖,因为读同一个版本的多个事依赖,因为读同一个版本的多个事务不会产生对另外一个版本的依赖务不会产生对另外一个版本的依赖Silberschatz,Korth and Sudarshan16.15Database System Concepts 3rd EditionTransaction Dependency Relationsn一个依赖图可以看作一个时间序列一个依赖图可以看作一个时间序列:如果事务如果事务T1 到事务到事务T2 有一条边,那么有一条边,那么T1 访问的对象随后会被访问的对象随
18、后会被T2 访访问,并且这些访问中至少有一个产生一个新的版本问,并且这些访问中至少有一个产生一个新的版本在这种意义上,在这种意义上,在这种意义上,在这种意义上,T1 在在 T2之前运行之前运行在事务的纯顺序执行之中,在事务的纯顺序执行之中,T1运行结束,再运行运行结束,再运行T2 T结束,所有的结束,所有的依赖箭头都是从依赖箭头都是从T1 指向指向T2 n隔离定理的主要结论是:任何一个没有环的依赖图都暗示了隔离定理的主要结论是:任何一个没有环的依赖图都暗示了事务的一种隔离执行方式事务的一种隔离执行方式Silberschatz,Korth and Sudarshan16.16Database S
19、ystem Concepts 3rd EditionThe Three BadThe Three BadTransaction DependenciesTransaction Dependenciesn一个令人惊奇的结论是:这三种不一致的基本形式覆盖了所一个令人惊奇的结论是:这三种不一致的基本形式覆盖了所有的情况,如果他们可以被防止发生,那将不会有并发异常,有的情况,如果他们可以被防止发生,那将不会有并发异常,事务将表现为隔离运行的状态事务将表现为隔离运行的状态Silberschatz,Korth and Sudarshan16.17Database System Concepts 3rd E
20、ditionFormal Model of Isolationn为了更精确地描述并发和恢复的问题,需要一个为了更精确地描述并发和恢复的问题,需要一个形式化的模型。因为,这些问题是复杂而又微妙形式化的模型。因为,这些问题是复杂而又微妙的,的,而而形式化有助于摆脱描述形式化有助于摆脱描述问题问题n“隔离性隔离性”的几种等价定义的几种等价定义直观定义直观定义:依据用户事务特性,直观定义是为依据用户事务特性,直观定义是为了方便了方便应用程序设应用程序设计人员和用户用来描述系统的行为计人员和用户用来描述系统的行为形式形式化定义化定义:依据系统执行的过程和依赖图,依据系统执行的过程和依赖图,形式形式化定义
21、是为化定义是为了了陈述和证明隔离性的性质。陈述和证明隔离性的性质。操作上的定义操作上的定义:依据封锁协议,操作上的定义是为依据封锁协议,操作上的定义是为了了用来指导系用来指导系统的实现。统的实现。n下面下面将要对冲突可串行性作形式化描述,将要对冲突可串行性作形式化描述,给出给出严严格定义格定义Silberschatz,Korth and Sudarshan16.18Database System Concepts 3rd Edition插曲插曲:画的圆没有说的圆圆画的圆没有说的圆圆n把想明白的事情把想明白的事情表达表达清楚是作科研的基本功清楚是作科研的基本功,下面是下面是从从Let开始开始的一
22、种下定义的方法。的一种下定义的方法。n例如例如:圆的定义圆的定义定义定义1:右边的图形称为圆右边的图形称为圆(通俗,通俗,但但不及格不及格)定义定义2:到一点的距离相等的轨迹称为圆到一点的距离相等的轨迹称为圆(及格及格)定义定义3:在一个平面上到一点的距离相等的轨迹称为圆在一个平面上到一点的距离相等的轨迹称为圆(良良)定义定义4:Let O be a point over planet P,R=0,and d(x,y)be the distance between points x and y.Then the set C=x|x in P,d(x,O)=R is said to be the
23、 circle with center O and radius R.(信息完整信息完整,严格规范严格规范,所以所以:优优)n严格定义好处严格定义好处:有了符号体系(模型),为后续研究奠定基础有了符号体系(模型),为后续研究奠定基础Silberschatz,Korth and Sudarshan16.19Database System Concepts 3rd EditionFormal Model of Isolationn隔离性隔离性(用户定义用户定义1):n事务处理系统可以并发地执行事务,但它的结果事务处理系统可以并发地执行事务,但它的结果如同顺序执行一样。就应用程序而言,事务好象如同顺
24、序执行一样。就应用程序而言,事务好象是在没有并发的情况下运行;事务的确切执行顺是在没有并发的情况下运行;事务的确切执行顺序是由系统控制的,系统行为等价于事务的某种序是由系统控制的,系统行为等价于事务的某种顺序执行,其造成的表面现象是一个事务执行完顺序执行,其造成的表面现象是一个事务执行完毕后,下一个事务才开始执行毕后,下一个事务才开始执行Silberschatz,Korth and Sudarshan16.20Database System Concepts 3rd EditionFormal Model of Isolationn隔离性隔离性(用户定义用户定义2):这是更为程序化的定义,称:
25、这是更为程序化的定义,称事务事务T与其它事务是隔离的,如果:与其它事务是隔离的,如果:(0)T不会重写其它事务的脏数据不会重写其它事务的脏数据(1)T所写的数据,在所写的数据,在T提交(提交(COMMIT WORK)之前,不会被其它事)之前,不会被其它事务读或者写务读或者写(2)T不读脏数据不读脏数据(3)在)在T提交之前,其它事务不会写提交之前,其它事务不会写T所要读的数据所要读的数据条件条件(0)和和(1)排除了丢失修改排除了丢失修改,(2)防止了读脏数据防止了读脏数据(3)防止了不可重复防止了不可重复读读n用用Bernstein,Hadzilacos,Goodman1987,p.36 的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第8章 并发控制 并发 控制
限制150内