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

上传人:小飞机 文档编号:6449107 上传时间:2023-11-01 格式:PPT 页数:94 大小:506.50KB
返回 下载 相关 举报
华中科技大学数据库课件第11章并发控制.ppt_第1页
第1页 / 共94页
华中科技大学数据库课件第11章并发控制.ppt_第2页
第2页 / 共94页
华中科技大学数据库课件第11章并发控制.ppt_第3页
第3页 / 共94页
华中科技大学数据库课件第11章并发控制.ppt_第4页
第4页 / 共94页
华中科技大学数据库课件第11章并发控制.ppt_第5页
第5页 / 共94页
点击查看更多>>
资源描述

《华中科技大学数据库课件第11章并发控制.ppt》由会员分享,可在线阅读,更多相关《华中科技大学数据库课件第11章并发控制.ppt(94页珍藏版)》请在三一办公上搜索。

1、An Introduction to Database System,11.1 并发控制概述11.2 封锁11.3 封锁协议11.4 活锁和死锁11.5 并发调度的可串行性11.6 两段锁协议11.7 封锁的粒度11.8 SQL Server的并发控制11.9 小结,第11章 并发控制,An Introduction to Database System,11.1 并发控制概述,并发控制:保证多用户并发操作数据库中信息时的正确性、一致性所采取的措施。事务的调度事务的一次执行顺序称为一个调度,表示事务的指令在系统中执行的时间顺序一组事务的调度必须保证包含了所有事务的操作指令一个事务中指令的顺序必

2、须保持不变,An Introduction to Database System,11.1 并发控制概述,串行调度在串行调度中,属于同一事务的指令紧挨在一起执行对于有n个事务的事务组,可以有n!个有效调度并行(发)调度在并行调度中,来自不同事务的指令可以交叉执行.当并行调度等价于某个串行调度时,则称它是可串行化的、正确的,An Introduction to Database System,11.1 并发控制概述,串行 vs 并行基本比较并行事务会破坏数据库的一致性串行事务效率低并行的优点一个事务由不同的步骤组成,所涉及的系统资源也不同。这些步骤可以并发执行,以提高系统的吞吐量系统中存在着周期

3、不等的各种事务,串行会导致难于预测的时延。如果各个事务所涉及的是数据库的不同部分,采用并发会减少平均响应时间核心问题在保证一致性的前提下最大限度地提高并发度,An Introduction to Database System,11.1 并发控制概述,并发操作可能带来的数据不一致性丢失更新(Lost Update)不可重复读(Non-Repeatable Read)读“脏”数据(Dirty Read),An Introduction to Database System,11.1 并发控制概述,丢失更新两个以上事务从DB中读入同一数据并修改,其中一事务(后提交的事务)的提交结果破坏了另一事务(

4、先提交的事务)的提交结果,导致先前提交事务对DB的修改被丢失。,An Introduction to Database System,11.1 并发控制概述,丢失更新举例:事务T1对数据库的修改丢失了,An Introduction to Database System,11.1 并发控制概述,不可重复读不可重复读是指事务1读取数据后,事务2执行更新操作,使事务1无法再现前一次读取结果。具体地讲,不可重复读包括三种情况:事务2修改了事务1所读数据,当事务1再次读该数据时,得到与前一次不同的值。事务1按一定条件从数据库中读取某些数据记录后,事务2删除了其中部分记录,当事务1再次按相同条件读取数据

5、时,发现某些记录神秘地消失了。事务1按一定条件从数据库中读取某些数据记录后,事务2插入了一些记录,当事务1再次按相同条件读取数据时,发现多了一些记录。,An Introduction to Database System,11.1 并发控制概述,不可重复读举例(1),An Introduction to Database System,11.1 并发控制概述,不可重复读举例(2),An Introduction to Database System,11.1 并发控制概述,读“脏”数据事务1修改某一数据,并将其写回磁盘事务2读取同一数据后,事务1由于某种原因被撤消.,这时事务1已修改过的数据被

6、恢复原值事务2读到的不稳定的瞬间数据就与数据库中的数据不一致,是不正确的数据,又称为“脏”数据。,An Introduction to Database System,11.1 并发控制概述,产生三类数据不一致的原因并发操作破坏了事务的隔离性必须对并发的一事务加以控制才能避免此类现象并发控制机制的任务对并发操作进行正确调度保证事务的隔离性保证数据库的一致性并发控制的方法加锁乐观假设时间戳,An Introduction to Database System,11.1 并发控制概述,SQL的隔离级别事务准备接受不一致数据的级别称为隔离级别,隔离级别是一个事务必须与其它事务进行隔离的程度.较低的隔

7、离级别可以增加并发,但代价是降低数据的正确性。较高的隔离级别可以确保数据的正确性,但可能对并发产生负面影响。应用程序要求的隔离级别确定了 SQL Server 使用的锁定行为,An Introduction to Database System,11.1 并发控制概述,SQL的隔离级别(续)从低到高可读未提交(Read Uncommitted)允许读未提交的记录可读提交(Read Committed)只允许读已提交的记录,但不要求可重复读可重复读(Repeatable Read)只允许读取已提交的记录,并要求一个事务对同一记录的两次读取之间,其它事务不能对该记录进行更新可串行化(Seriali

8、zable)一个调度的执行必须等价于一个串行调度的结果,An Introduction to Database System,11.1 并发控制概述11.2 封锁11.3 封锁协议11.4 活锁和死锁11.5 并发调度的可串行性11.6 两段锁协议11.7 封锁的粒度11.8 SQL Server的并发控制11.9 小结,第11章 并发控制,An Introduction to Database System,11.2 封锁,封锁是实现并发控制的一个非常重要的技术封锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁加锁后事务T就对该数据对象有了一定的控制,在事务

9、T释放它的锁之前,其它的事务不能更新此数据对象。DBMS通常提供了多种类型的封锁。一个事务对某个数据对象加锁后究竟拥有什么样的控制是由封锁的类型决定的。,An Introduction to Database System,11.2 封锁,封锁的类型排它锁(eXclusive lock,简记为X锁)又称写锁,若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁共享锁(Share lock,简记为S锁)又称为读锁,若事务T对数据对象A加上S锁,则其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁,An Introduction

10、 to Database System,11.2 封锁,封锁类型的相容矩阵,An Introduction to Database System,11.1 并发控制概述11.2 封锁11.3 封锁协议11.4 活锁和死锁11.5 并发调度的可串行性11.6 两段锁协议11.7 封锁的粒度11.8 SQL Server的并发控制11.9 小结,第11章 并发控制,An Introduction to Database System,11.3 封锁协议,在运用X锁和S锁对数据对象加锁时,需要约定一些规则:封锁协议(Locking Protocol)何时申请X锁或S锁持锁时间、何时释放 不同的封锁协

11、议,在不同的程度上为并发操 作的正确调度提供一定的保证。不同级别的封锁协议达到的系统一致性级别是不同的。常用的封锁协议:支持一致性维护的三级封锁协议/支持并行调度可串行化的两段锁协议/避免死锁的协议,An Introduction to Database System,11.3 封锁协议,一、一级封锁协议事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放正常结束(COMMIT)非正常结束(ROLLBACK)1级封锁协议可防止丢失修改在1级封锁协议中,如果仅是读数据,是不需要加锁的,所以它不能保证可重复读和不读“脏”数据。,An Introduction to Database Syst

12、em,11.3 封锁协议,没有丢失更新,An Introduction to Database System,11.3 封锁协议,读“脏”数据,An Introduction to Database System,11.3 封锁协议,不可重复读,An Introduction to Database System,11.3 封锁协议,二、二级封锁协议1级封锁协议+事务T在读取数据R前必须先加S锁,读完后即可释放S锁2级封锁协议可以防止丢失修改和读“脏”数据。在2级封锁协议中,由于读完数据后即可释放S锁,所以它不能保证可重复读。,An Introduction to Database Syste

13、m,11.3 封锁协议,不可重复读,An Introduction to Database System,11.3 封锁协议,三、三级封锁协议1级封锁协议+事务T在读取数据R前必须先加S锁,直到事务结束才释放3级封锁协议可以防止丢失修改、读“脏”数据以及不可重复读。,An Introduction to Database System,11.3 封锁协议,三级协议的主要区别什么操作需要申请封锁何时释放锁(即持锁时间)不同级别的封锁协议达到的系统一致性级别不同,An Introduction to Database System,11.1 并发控制概述11.2 封锁11.3 封锁协议11.4 活

14、锁和死锁11.5 并发调度的可串行性11.6 两段锁协议11.7 封锁的粒度11.8 SQL Server的并发控制11.9 小结,第11章 并发控制,An Introduction to Database System,11.4 活锁和死锁,封锁技术可以有效地解决并行操作的一致性问题,但也带来一些新的问题死锁活锁,An Introduction to Database System,11.4 活锁和死锁,活锁事务T1封锁数据R,事务T2又请求封锁R,于是T2等待。此时,T3也请求封锁R,被迫等待。当T1释放R上的封锁后,系统却首先批准了T3的请求,T2被迫继续等待。然后,又有别的事务,比如T

15、4请求封锁R,当T3释放R上的封锁后,系统统又批准了T4的请求,T2有可能永远等待。这就是活锁。如何避免活锁先来先服务,An Introduction to Database System,11.4 活锁和死锁,死锁两个或两个以上事务均处于等待状态,每个事务都在等待其中另一个事务封锁的数据,导致任何事务都不能继续执行的现象称为死锁。死锁的产生条件互斥(排它性控制);不可剥夺(释放前,其它事务不能剥夺);部分分配(每次申请一部分,申请新的时,又占用已获得者);环路(循环链中,每事务获得数据同时又被另一事务请求)。,An Introduction to Database System,11.4 活

16、锁和死锁,死锁的例子,An Introduction to Database System,11.4 活锁和死锁,解决死锁的方法死锁的预防死锁的诊断与解除,An Introduction to Database System,11.4 活锁和死锁,死锁的预防(破坏产生死锁的条件)互斥-?不可剥夺-预防?部分分配环路方法一次封锁法 顺序封锁法,An Introduction to Database System,11.4 活锁和死锁,一次封锁法每个事务事先一次获得所需数据的全部锁特点简单,无死锁难以确定封锁对象封锁范围扩大化,从而并发度低,An Introduction to Database

17、System,11.4 活锁和死锁,顺序封锁法预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁特点简单,无死锁难以确定封锁对象顺序也难以确定,An Introduction to Database System,11.4 活锁和死锁,结论在操作系统中广为采用的预防死锁的策略并不很适合数据库的特点DBMS在解决死锁的问题上更普遍采用的是诊断并解除死锁的方法,An Introduction to Database System,11.4 活锁和死锁,死锁的诊断与解除允许死锁发生解除死锁由DBMS的并发控制子系统定期检测系统中是否存在死锁一旦检测到死锁,就要设法解除两种方法超时法等待图法

18、,An Introduction to Database System,11.4 活锁和死锁,超时法如果一个事务的等待时间超过了规定的时限,就认为发生了死锁优点:实现简单缺点有可能误判死锁时限标准难以把握。时限若设置得太长,死锁发生后不能及时发现;太短则易误判,An Introduction to Database System,11.4 活锁和死锁,等待图法用事务等待图动态反映所有事务的等待情况事务等待图是一个有向图G=(T,U)T为结点的集合,每个结点表示正运行的事务U为边的集合,每条边表示事务等待的情况若T1等待T2,则T1,T2之间划一条有向边,从T1指向T2并发控制子系统周期性地(比

19、如每隔1 min)检测事务等待图,如果发现图中存在回路,则表示系统中出现了死锁。,An Introduction to Database System,11.4 活锁和死锁,解除死锁选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有的锁,使其它事务能继续运行下去。,An Introduction to Database System,11.1 并发控制概述11.2 封锁11.3 封锁协议11.4 活锁和死锁11.5 并发调度的可串行性11.6 两段锁协议11.7 封锁的粒度11.8 SQL Server的并发控制11.9 小结,第11章 并发控制,An Introduction t

20、o Database System,11.5 并发调度的可串行性,DBMS对并发事务不同的调度可能会产生不同的结果什么样的调度是正确的?多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同。这种并行调度策略称为可串行化(Serializable)的调度。,An Introduction to Database System,11.5 并发调度的可串行性,可串行化是并行事务正确性的唯一准则例:现在有两个事务,分别包含下列操作:事务1:读B;A=B+1;写回A;事务2:读A;B=A+1;写回B;假设A的初值为2,B的初值为2。串行执行先事务1,再事务2先事务2,再事务1

21、交错执行不可串行化的调度可串行化的调度,An Introduction to Database System,11.5 并发调度的可串行性,先事务1,再事务2,An Introduction to Database System,11.5 并发调度的可串行性,先事务2,再事务1,An Introduction to Database System,11.5 并发调度的可串行性,不可串行化的调度:跟任何一种串行执行的结果都不相同,An Introduction to Database System,11.5 并发调度的可串行性,可串行化的调度:与某一串行执行的结果相同,An Introducti

22、on to Database System,11.5 并发调度的可串行性,思考:下述三个事务并发执行,有多少种可能的正确结果?请一一列举出来T1:A:=A+2T2:A:=A*2T3:A:=A*A(A的初值为0)n个事务可以允许并发执行,则最多有多少种可能的正确结果?,An Introduction to Database System,11.5 并发调度的可串行性,保证并发操作调度正确性的方法封锁方法:两段锁(Two-Phase Locking,简称2PL)协议时标方法(时间戳方法)乐观方法,An Introduction to Database System,11.5 并发调度的可串行性,什

23、么样性质的调度是可串行化调度呢?充分条件:冲突可串行化一个调度Sc在保证冲突操作的次序不变的情况下,通过交换两个事务不冲突操作的次序得到另一个调度Sc,如果Sc是串行的,称调度Sc为冲突可串行化的调度一个调度是冲突可串行化,一定是可串行化的调度,An Introduction to Database System,11.5 并发调度的可串行性,何为冲突操作:不同事务对同一数据的读写操作和写写操作Ri(x)与Wj(x)/*事务Ti读x,Tj写x*/Wi(x)与Wj(x)/*事务Ti写x,Tj写x*/其他操作是不冲突操作不同事务的冲突操作和同一事务的两个操作不能交换(Swap)不同事务,同一数据,

24、读读操作可交换不同事务,不同数据,无论读写皆可交换,An Introduction to Database System,11.5 并发调度的可串行性,例今有调度SC1=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)把w2(A)与r1(B)w1(B)交换,得到:r1(A)w1(A)r2(A)r1(B)w1(B)w2(A)r2(B)w2(B)再把r2(A)与r1(B)w1(B)交换:Sc2r1(A)w1(A)r1(B)w1(B)r2(A)w2(A)r2(B)w2(B)Sc2等价于一个串行调度T1,T2,Sc1冲突可串行化的调度,An Introduction t

25、o Database System,11.5 并发调度的可串行性,例今有调度SC1=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B),An Introduction to Database System,11.5 并发调度的可串行性,例今有调度SC1=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B),An Introduction to Database System,11.5 并发调度的可串行性,例今有调度SC1=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B),An Introduction t

26、o Database System,11.5 并发调度的可串行性,冲突可串行化调度是可串行化调度的充分条件,不是必要条件。还有不满足冲突可串行化条件的可串行化调度。例有3个事务 T1=W1(Y)W1(X),T2=W2(Y)W2(X),T3=W3(X)调度L1=W1(Y)W1(X)W2(Y)W2(X)W3(X)是一个串行调度。调度L2=W1(Y)W2(Y)W2(X)W1(X)W3(X)不满足冲突可串行化。但是调度L2是可串行化的,因为L2执行的结果与调度L1相同,Y的值都等于T2的值,X的值都等于T3的值,An Introduction to Database System,11.1 并发控制概

27、述11.2 封锁11.3 封锁协议11.4 活锁和死锁11.5 并发调度的可串行性11.6 两段锁协议11.7 封锁的粒度11.8 SQL Server的并发控制11.9 小结,第11章 并发控制,An Introduction to Database System,11.6 两段锁协议,两段锁协议的内容1.在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁;2.在释放一个封锁之后,事务不再获得任何其他封锁。,An Introduction to Database System,11.6 两段锁协议,“两段”锁的含义事务分为两个阶段 第一阶段是获得封锁,也称为扩展阶段;第二阶段是释放

28、封锁,也称为收缩阶段。,An Introduction to Database System,11.6 两段锁协议,例:事务1的封锁序列:Slock A Slock B Xlock C Unlock B Unlock A Unlock C;事务2的封锁序列:Slock A Unlock A Slock B Xlock C Unlock C Unlock B;事务1遵守两段锁协议,而事务2不遵守两段协议。,An Introduction to Database System,11.6 两段锁协议,事务遵守两段锁协议是可串行化调度的充分条件,而不是必要条件若并发事务都遵循两段锁协议,则对其的任何并

29、发调度策略都是可串行化的若对并发事务的一个调度是可串行化的,不一定所有事务都符合两段锁协议(前面有一例),An Introduction to Database System,11.6 两段锁协议,T1Slock B读B=2Y=BXlock AA=Y+1写回A=3Unlock BUnlock A,T2Slock A 等待 等待 等待 等待 等待Slock A读A=3Y=A Xlock BB=Y+1写回B=4Unlock BUnlock A,T1Slock B读B=2Y=BUnlock BXlock AA=Y+1写回A=3Unlock A,T2Slock A等待等待等待等待Slock A读A=3

30、X=AUnlock AXlock BB=X+1写回B=4Unlock B,(a)遵守两段锁协议,(b)不遵守两段锁协议,T1Slock B读B=2Y=BUnlock BXlock AA=Y+1写回A=3Unlock A,T2Slock A读A=2X=AUnlock AXlock B等待Xlock BB=X+1写回B=3Unlock B,(c)不遵守两段锁协议,An Introduction to Database System,11.6 两段锁协议,两段锁协议与防止死锁的一次封锁法一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行,因此一次封锁法遵守两段锁协议但是两段

31、锁协议并不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁,An Introduction to Database System,11.6 两段锁协议,例:遵守两段锁协议的事务发生死锁,An Introduction to Database System,11.6 两段锁协议,两段锁协议与三级封锁协议两类不同目的的协议两段锁协议保证并发调度的正确性三级封锁协议在不同程度上保证数据一致性遵守第三级封锁协议必然遵守两段协议,An Introduction to Database System,11.1 并发控制概述11.2 封锁11.3 封锁协议11.4 活锁和死锁

32、11.5 并发调度的可串行性11.6 两段锁协议11.7 封锁的粒度11.8 SQL Server的并发控制11.9 小结,第11章 并发控制,An Introduction to Database System,11.7 封锁的粒度,封锁(X锁/S锁)都是加在某一个数据对象上的封锁的对象:逻辑单元,物理单元 例:在关系数据库中,封锁对象:逻辑单元:属性值、属性值集合、元组、关系、索引项、整个索引、整个数据库等物理单元:页(数据页或索引页)、物理记录等,An Introduction to Database System,11.7 封锁的粒度,封锁对象可以很大也可以很小 例:对整个数据库加锁

33、对某个属性值加锁封锁对象的大小称为封锁的粒度(Granularity)多粒度封锁(multiple granularity locking)在一个系统中同时支持多种封锁粒度供不同的事务选择,An Introduction to Database System,11.7 封锁的粒度,封锁对象可以很大也可以很小 例:对整个数据库加锁 对某个属性值加锁封锁对象的大小称为封锁的粒度(Granularity)多粒度封锁(multiple granularity locking)在一个系统中同时支持多种封锁粒度供不同的事务选择,An Introduction to Database System,11.7

34、 封锁的粒度,封锁的粒度与并发度和并发控制的开销密切相关封锁的粒度越 大,小,系统被封锁的对象 少,多,并发度 小,高,系统开销 小,大,选择封锁粒度:考虑封锁机构和并发度两个因素对系统开销与并发度进行权衡,An Introduction to Database System,11.7 封锁的粒度,选择封锁的原则需要处理多个关系的大量元组的用户事务:以数据库为封锁单位;需要处理大量元组的用户事务:以关系为封锁单元;只处理少量元组的用户事务:以元组为封锁单位,An Introduction to Database System,11.7 封锁的粒度,多粒度封锁多粒度树:以树形结构来表示多级封锁粒

35、度根结点是整个数据库,表示最大的数据粒度叶结点表示最小的数据粒度,An Introduction to Database System,11.7 封锁的粒度,多粒度封锁(续)允许多粒度树中的每个结点被独立地加锁对一个结点加锁意味着这个结点的所有后裔结点也被加以同样类型的锁在多粒度封锁中一个数据对象可能以两种方式封锁:显式封锁和隐式封锁显式封锁:直接加到数据对象上的封锁隐式封锁:由于其上级结点加锁而使该数据对象加上了锁显式封锁和隐式封锁的效果是一样的,An Introduction to Database System,11.7 封锁的粒度,对某个数据对象加锁时,须检查该数据对象有无显式封锁与之

36、冲突 所有上级结点检查本事务的显式封锁是否与该数据对象上的隐式封锁冲突:(由上级结点封锁造成的)所有下级结点看上面的显式封锁是否与本事务的隐式封锁(将加到下级结点的封锁)冲突。,An Introduction to Database System,11.7 封锁的粒度,上述检查效率太低,为此引入“意向锁”对任一结点加基本锁,必须先对它的上层结点加意向锁(intention lock)如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁常用意向锁意向共享锁(Intent Share Lock,简称IS锁)意向排它锁(Intent Exclusive Lock,简称IX锁)共享意向排它锁(Sh

37、are Intent Exclusive Lock,简称SIX锁),An Introduction to Database System,11.7 封锁的粒度,IS锁如果对一个数据对象加IS锁,表示它的后裔结点拟(意向)加S锁。例:要对某个元组加S锁,则要首先对关系和数据库加IS锁IX锁如果对一个数据对象加IX锁,表示它的后裔结点拟(意向)加X锁。例:要对某个元组加X锁,则要首先对关系和数据库加IX锁。,An Introduction to Database System,11.7 封锁的粒度,SIX锁如果对一个数据对象加SIX锁,表示对它加S锁,再加IX锁,即SIX=S+IX。例:对某个表加

38、SIX锁,则表示该事务要读整个表(所以要对该表加S锁),同时会更新个别元组(所以要对该表加IX锁)。,An Introduction to Database System,11.7 封锁的粒度,意向锁的相容矩阵,An Introduction to Database System,11.7 封锁的粒度,锁的强度锁的强度是指它对其他锁的排斥程度一个事务在申请封锁时以强锁代替弱锁是安全的,反之则不然,An Introduction to Database System,11.7 封锁的粒度,具有意向锁的多粒度封锁方法申请封锁时应该按自上而下的次序进行;释放封锁时则应该按自下而上的次序进行 例:事务

39、T要对一个数据对象加锁,必须先对它的上层结点加意向锁,An Introduction to Database System,11.1 并发控制概述11.2 封锁11.3 封锁协议11.4 活锁和死锁11.5 并发调度的可串行性11.6 两段锁协议11.7 封锁的粒度11.8 SQL Server的并发控制11.9 小结,第11章 并发控制,An Introduction to Database System,11.8 SQL Server的并发控制,Microsoft SQL Server 2000 采用具有意向锁的多粒度封锁方法多粒度(由小到大)RID键页(8K)盘区(连续8页)表DB,An

40、 Introduction to Database System,11.8 SQL Server的并发控制,锁模式共享锁(S)更新锁(U)排它锁(X)意向锁:IS,IX,SIX架构锁:Sch-M,Sch-S大容量更新锁(BU),An Introduction to Database System,11.8 SQL Server的并发控制,Microsoft SQL Server 2000提供了乐观并发控制和悲观并发控制。默认使用悲观并发控制。SQL Server的隔离级别 可读未提交(Read Uncommitted)可读提交(Read Committed)可重复读(Repeatable Re

41、ad)可串行化(Serializable),An Introduction to Database System,11.1 并发控制概述11.2 封锁11.3 封锁协议11.4 活锁和死锁11.5 并发调度的可串行性11.6 两段锁协议11.7 封锁的粒度11.8 SQL Server的并发控制8.9 小结,第11章 并发控制,An Introduction to Database System,11.9 小结,数据共享与数据一致性是一对矛盾数据库的价值在很大程度上取决于它所能提供的数据共享度。数据共享在很大程度上取决于系统允许对数据并发操作的程度。数据并发程度又取决于数据库中的并发控制机制另

42、一方面,数据的一致性也取决于并发控制的程度。施加的并发控制愈多,数据的一致性往往愈好。,An Introduction to Database System,11.9 小结,数据库的并发控制以事务为单位数据库的并发控制通常使用封锁机制两类最常用的封锁:X/S不同级别的封锁协议提供不同的数据一致性保证,提供不同的数据共享度。三级封锁协议,An Introduction to Database System,11.9 小结,并发控制机制调度并发事务操作是否正确的判别准则是可串行性并发操作的正确性则通常由两段锁协议来保证。两段锁协议是可串行化调度的充分条件,但不是必要条件,An Introducti

43、on to Database System,11.9 小结,对数据对象施加封锁,带来问题:活锁与死锁活锁:先来先服务死锁:预防方法一次封锁法顺序封锁法 死锁的诊断与解除超时法等待图法,An Introduction to Database System,11.9 小结,不同的数据库管理系统提供的封锁类型、封锁协议、达到的系统一致性级别不尽相同。但是其依据的基本原理和技术是共同的。,An Introduction to Database System,第11章书面作业,P305-306习题2,3,4,5,8,9,10,12,An Introduction to Database System,剧终The End,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号