第7章并发控制_第1页
第7章并发控制_第2页
第7章并发控制_第3页
第7章并发控制_第4页
第7章并发控制_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 数据库系统与应用数据库系统与应用_第7章 并发控制 电子科技大学电子科技大学 计算机学院计算机学院郑莉华郑莉华 cd_DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 l7.1 事务的并发执行 l7.2 并发执行可能引起的问题 l7.3 可串行化 l7.4 基于锁的并发控制协议 l7.5 活锁与死锁 l7.6 多粒度封锁 DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 7.1 事务的并发执行l并发执行优点改善系统的资源利用率

2、 减少短事务的等待时间 DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 调度调度(schedule)(schedule)一个或多个事务的操作按时间排序的一个序列一个事务的两个操作在调度中出现的顺序必须与其在事务内定义的先后顺序一致7.1 事务的并发执行DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 7.2 并发执行可能引起的问题 脏数据(dirty data) 是对未提交事务所写数据的统称 若脏读造成了数据库的不一致状态,应严格禁止 若脏读带来的影响足够小,偶尔可读一次脏数据,它可以提高并发性,减少事务的等待时

3、间 读脏数据(读脏数据(dirty readdirty read)DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 不可重复读不可重复读(unrepeatable read) (unrepeatable read) 事务T1的两次读取数据之间,其它事务修改了它要读取的数据,以致两次读到的值不同 在事务串行执行时,不会出现此现象 7.2 并发执行可能引起的问题 DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 丢失更新丢失更新(lost update) (lost update) 由两个事务对同一数据并发地写入引起

4、7.2 并发执行可能引起的问题 DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 7.3 可串行化l回顾:事务ACID特性中的隔离性l事务在运行中不受其它事务干扰的方法:每个事务依次顺序执行 事务之间并发执行,DBMS调整事务的调度,使其运行结果与一次只执行一个事务的结果相同DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 7.3.1 7.3.1 串行调度串行调度 l串行调度:不同事务的活动在调度中是一个接一个执行的,没有交叉的运行。7.3 可串行化DataBaseUESTC 电子科技大学电子科技大学 计算机科学计

5、算机科学 数据库数据库 两个串行调度的结果不同。但只要保持了数据库的一致性,最终的结果并不重要 【例7-1】 :串行调度4 串行调度57.3 可串行化DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 7.3.2 7.3.2 可串行化调度可串行化调度 l调度是可串行化的:多个事务交叉调度的结果与某一个串行调度的结果相同lDBMS认为事务串行调度的结果保持了数据库的一致性,都是正确的 l一个调度如果是可串行化的,系统认为其调度是一个正确的调度,保持了数据库的一致性 7.3 可串行化DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数

6、据库数据库 【例7-2】:例7-1中事务的另外一种调度方式:调度6 它的结果和书中串行调度4的结果相同,因此该调度是可串行的调度 7.3 可串行化DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 【例7-2】:例7-1中事务的另外一种调度方式:调度7 调度7最终的结果与串行调度4、串行调度5中的任何一个结果都不一致,是一个不可串行化的调度。7.3 可串行化DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 l如果将事务的并发执行完全交给操作系统,则任何一种调度方式都有可能出现。有的调度能保持数据库的一致,有的调度却会

7、产生错误的结果。因此:DBMS必须对事务的运行加以控制,确保交叉调度完毕后的结果与某一串行调度的结果相同,数据库不会出现不一致的状态。 7.3 可串行化DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 设WRITE简写为W,READ简写为R,WT(X)、RT(X)分别表示事务T写和读数据库元素X,S表示一个调度。这样,图7.8的调度7可表示为: S=R1(A)R2(A)W1(A)W2(A)R2(B)R1(B)W2(B)W1(B) 7.3 可串行化冲突可串行化冲突可串行化DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据

8、库 考虑一个调度S,涉及事务Ti 和Tj (i j),事务Ti的操作对象元素为A,事务Tj的操作对象元素为B。若AB,很明显,事务Ti 和Tj 是对不同的数据库元素进行操作,不论它们的执行动作是读还是写,执行的先后顺序都不会影响数据库中的最终结果。若A=B,则事务的执行顺序就很重要。 7.3 可串行化DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 l若事务Ti 和Tj都是读取数据R1(A),R2(A),则Ri(A),Rj(A)指令不发生冲突l若事务Ti 和Tj一个是读数据,一个是写数据,则事务的执行顺序是重要的。Ri(A)和Wj(A)指令是冲突的l若事

9、务Ti 和Tj都是写数据W1(A),W2(A),则Wi(A)和Wj(A)指令也是冲突的7.3 可串行化DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 调度S中两个事务的操作要发生冲突,必须:对同一数据对象进行操作两个操作指令中有一个是写操作W 例如:图7.8的调度7S=R1(A)R2(A)W1(A)W2(A)R2(B)R1(B)W2(B)W1(B)T2事务的READ(A)与T1事务的WRITE(A)是冲突指令,但T1事务的READ(A)与T2事务的READ(A)指令是不冲突。 7.3 可串行化DataBaseUESTC 电子科技大学电子科技大学 计算机

10、科学计算机科学 数据库数据库 l冲突等价:若调度S中属于不同事务的两条操作指令是不冲突的,则可以交换两条指令的执行顺序,得到一个新的调度S。称调度S与调度S冲突等价的(conflict equivalent)。l冲突可串行化:若一个调度冲突等价于一个串行调度,则该调度是冲突可串行化的。 7.3 可串行化DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 考虑前面的调度6:S= R1(A)W1(A)R2(A)W2(A)R1(B)W1(B)R2(B)W2(B)调度中的R1(B)与W2(A)指令不冲突,可以交换执行顺序;R1(B)与R2(A)指令不冲突,可以交换

11、执行顺序;W1(B)与W2(A)指令不冲突,可以交换执行顺序;W1(B)与R2(A)指令不冲突,可以交换执行顺序。在四个交换之后,得到新的调度S:S= R1(A)W1(A)R1(B)W1(B)R2(A)W2(A)R2(B)W2(B)调度S是一个串行调度,即前面的调度4。因此,调度6等价于串行调度4,是冲突可串行化的。 7.3 可串行化DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 l冲突可串行是可串行性的充分条件 调度运行结果与串行调度T1T2T3的运行结果是一致的,但调度不是冲突可串行的 7.3 可串行化DataBaseUESTC 电子科技大学电子科

12、技大学 计算机科学计算机科学 数据库数据库 7.3 可串行化视图可串行化视图可串行化l视图等价:对同一事务集,如果两个调度S1和S2在任何时候都保证每个事务读取相同的值,写入数据库的最终状态也是一样的,则称调度S1和S2视图等价。DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 调度4和调度5不是视图等价的,因为调度4中T2事务读取的A值是事务T1修改后的值,而调度5中T2事务读取的A值是事务T1修改前的值。 调度4 调度57.3 可串行化DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 调度4和调度6是视图等价的

13、,因为两个调度中,事务T1读取的都是数据库的初始值,事务T2读取的数据都是事务T1修改后的值,数据库中药品A、B的最终状态都是由事务T2写入的。 7.3 可串行化 调度4 调度6DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 l视图可串行化:如果某个调度视图等价于一个串行调度,则称这个调度是视图可串行化的 l如果调度是冲突可串行化的,则该调度一定是视图可串行化的。但反过来未必成立。 7.3 可串行化DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 【例7-3】:设调度S1为事务T1、T2、T3的一个可能调度:S1

14、=R1(A)W3(A)R2(B)W1(B)经过非冲突指令顺序的调整,得到调度S2:S2=R2(B)R1(A)W1(B)W3(A)调度S1和调度S2是冲突等价的。又因为调度S2为一串行调度,因此调度S1是冲突可串行化的。对于调度S1和S2,事务T1读取的A、事务T2读取的B都是数据库的初始值;数据库最终的A、B值都是由事务T3和T1写入的。因此,调度S1和S2是视图可串行化的。 7.3 可串行化DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 【例7-4】:设调度S为事务T1、T2、T3的一个可能调度:S=R1(A)W2(A)W1(A)W3(A)该调度与串

15、行调度T1T2T3是视图等价的,因为在两个调度中读取的A都是数据库的初始值,数据库中A的最终值都是T3写入的。调度S视图可串行化。但调度S明显不是冲突可串行化的,每对连续指令都是冲突的。 7.3 可串行化DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 l判定一个调度是否是冲突可串行化的,可以使用前驱图(precedence graph)l在构造的前驱图中若存在环,则表示调度S是不可串行化的。反之,若前驱图中不存在环,表示调度S是冲突可串行化的,可用拓扑排序得到调度S 的一个等价的串行调度。 7.3 可串行化可串行化判定可串行化判定DataBaseUES

16、TC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 前驱图是一个有向图G=(V,E)。顶点代表调度S 中的事务,由TiTj 的边表示在调度S中Ti 和Tj之间存在一对冲突指令,并且Ti中的指令先于Tj 中的指令执行。【例7-5】:考虑前面的调度6:S= R1(A)W1(A)R2(A)W2(A)R1(B)W1(B)R2(B)W2(B)在S中,冲突指令W1(A)在R2(A)前,W1(B)在R2(B)前,因此存在从T1到T2的有向边。 7.3 可串行化DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 【例7-6】:考虑前面的调度7:S=R1(A

17、)R2(A)W1(A)W2(A)R2(B)R1(B)W2(B)W1(B)在S中,冲突指令W1(A)在W2(A)之前,R1(B)在W2(B)之前,因此存在T1到T2的有向边;此外, R2(A)在W1(A)之前,W2(B)在W1(B)之前,因此存在T2到T1的有向边。 7.3 可串行化DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 7.3.3 7.3.3 可恢复性可恢复性 一个无法恢复的调度是不允许的。数据库系统要求所有的调度都是可恢复的 7.3 可串行化DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 调度是可恢复

18、的需满足:l调度S中,事务Ti如果读取了事务Tj修改过的数据,则事务Ti必须等事务Tj提交后才能提交 。7.3 可串行化DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 【例7-7】: 调度S1是可恢复的,可串行的:S1=R1(A)W1(A)R2(A)W1(B)W2(B)C1 C2 调度S2是可恢复的,但不是可串行的:S2=R1(A)W1(A)R2(A)W2(B)W1(B)C1 C2 调度S3:是不可恢复的,但是可串行的 S3=R1(A)W1(A)R2(A)W1(B)W2(B)C2 C1 7.3 可串行化DataBaseUESTC 电子科技大学电子科技大

19、学 计算机科学计算机科学 数据库数据库 l 事务在并行执行过程中发生故障,还可能引起多个事务的级联回滚 。例:在前面的脏读例子中,假定T2事务读取A 的值并修改,另外还有T3事务读取T2修改后的值,并做了修改,依次类推,有多个事务都对A做了修改。若事务T1发生故障时,后续的事务T2、T3、T4.都已提交,则事务T1的回滚导致级联回滚,产生大量的撤销工作。 7.3 可串行化DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 无级联回滚的调度应满足:l调度S中的每对事务Ti和Tj,事务Ti如果读取了事务Tj修改过的数据,则事务Tj必须在Ti读取前提交即调度禁止

20、读取脏数据。 7.3 可串行化DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 7.4 基于锁的并发控制协议 l事务执行过程中锁的申请和释放由DBMS中的锁管理器(lock manager)负责 l锁表包含的信息包括:每个数据库对象上已有的锁的个数、锁的类型以及一个指向申请锁队列的指针 DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 7.4.1 7.4.1 封锁封锁l共享锁(S锁):如果事务Ti申请到数据项Q 的共享锁,则Ti可以读数据项Q,但不能写Q。l排它锁(X锁):如果事务Ti申请到数据项Q 的排它锁,则T

21、i可以读数据项Q,也可以写Q。 7.4 基于锁的并发控制协议 DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 锁的相容矩阵锁的相容矩阵 7.4 基于锁的并发控制协议 DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 当事务需要数据项上的一个锁时,它向锁管理器发出锁的申请:l若申请的是一个共享锁,且申请队列为空,当前数据项上也没有排它锁,则锁管理器授予锁,并修改数据项的锁表。l若申请的是一个排它锁,当前也没有其它的事务拥有该数据项上的锁,则锁管理器授予锁,并修改数据项的锁表。l否则,申请的锁不能马上授予,锁申请加入

22、申请队列,申请锁的事务挂起。 7.4 基于锁的并发控制协议 DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 【例7-8】:调度9 7.4 基于锁的并发控制协议 DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 图(a)中 ,该封锁在更新后立即释放,有可能引起其它事务的脏读 图(b)中 ,事务将锁的释放都放到事务的最后,这样可以有效避免(a)中可能出现的脏读情况,并保证了事务执行的可串行性 。但该封锁方式在一定程度上降低了并发度,可能会出现一种称之为死锁的状况,如图(c)所示7.4 基于锁的并发控制协议 DataB

23、aseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 l 如果不使用封锁,或者光对并发执行的事务加锁,对锁的申请和释放时间却不加控制,就不能保证事务执行的可串行性,数据库的一致状态仍有可能被破坏 7.4 基于锁的并发控制协议 DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 7.4.2 7.4.2 两段锁协议(两段锁协议(2PL2PL)保证可串行性的一个协议是两段锁协议(two-phase locking protocol)。所谓两段锁协议是指所有事务分两个阶段提出加锁和解锁申请l增长阶段(growing phase):在对任何

24、数据进行读、写操作之前,首先申请并获得该数据的封锁;l收缩阶段(shrinking phase):在释放一个封锁后,事务不再申请和获得其它的任何封锁。 7.4 基于锁的并发控制协议 DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 l两段锁协议是保证冲突可串行化的充分条件,但该协议不保证不发生死锁。 例:例7-8调度9中的(b):满足两段锁协议的,该调度是一个冲突可串行化的调度;例7-8调度9中的(c):也满足遵守两段锁协议的,但该调度发生了死锁。例7-8调度9中的(a):并没有遵守两段锁协议,但该调度是冲突可串行化的。 7.4 基于锁的并发控制协议 D

25、ataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 图中每个事务都遵从两段锁协议,若T1事务在WRITE(B)时刻发生故障,将导致事务T2、T3级联回滚。 7.4 基于锁的并发控制协议 DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 l为避免级联回滚,可使用严格两段锁协议(strict two-phase locking protocol) l严格两段锁协议:除要求满足两段锁协议规定外,还要求事务的排它锁必须在事务提交之后释放 避免了脏读和丢失修改的问题。l强两段锁协议(rigorous two-phase lock

26、ing protocol):两段锁协议的另一个变化,除要求满足两段锁协议规定外,还要求事务的所有锁都必须在事务提交之后释放。进一步解决数据项不能重复读的问题 7.4 基于锁的并发控制协议 DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 l从两段锁协议到严格两段锁协议,再到强两段锁协议,事务持锁的时间不断增长。这不但保证事务的并发调度是冲突可串行化的,还不断增强了数据库的一致性保证。但带来的另一方面的问题是并发度的降低,以及死锁出现可能性的增加 l目前,大多数的DBMS都采用严格两段锁协议或强两段锁协议 7.4 基于锁的并发控制协议 DataBaseUE

27、STC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 7.4.3 7.4.3 锁的升级及更新锁锁的升级及更新锁 【例7-9】 7.4 基于锁的并发控制协议 DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 l锁的升级有可能使得出现死锁的概率加大 l更新锁只允许事务读取数据项而不能修改数据项l系统允许更新锁升级,而不允许共享锁升级 7.4 基于锁的并发控制协议 DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 锁的相容矩阵锁的相容矩阵 7.4 基于锁的并发控制协议 DataBaseUESTC 电子科技

28、大学电子科技大学 计算机科学计算机科学 数据库数据库 有了更新锁后,【例7-9】调度10只须将T1事务中的SLOCK(A)、SLOCK(B)变为ULOCK(A)、ULOCK(B),两个事务仍然可以如调度10一样并发执行。而上诉提到的死锁现象根本不可能再出现 。7.4 基于锁的并发控制协议 DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 7.5.1 7.5.1 活锁活锁 解决活锁的方法:采用先来先服务的策略 7.5 活锁与死锁DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 7.5.2 7.5.2 死锁的形成死锁的

29、形成 针对死锁,DBMS可以有两种处理方式:一种是进行死锁的预防,不让并发执行的事务出现死锁的状况;一种是允许死锁的发生,在死锁出现后采取措施解决,为此系统中需增加死锁的检测及死锁的解除算法 7.5 活锁与死锁DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 7.5.3 7.5.3 死锁的预防死锁的预防 l顺序封锁法 将数据库对象按某种规定的顺序排列,要求事务实行封锁也必须按照这个顺序进行。 缺点:不好确定数据库对象的封锁顺序。维护封锁顺序是件困难的事情且成本很高7.5 活锁与死锁DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学

30、 数据库数据库 l一次封锁法 要求事务在开始执行前先申请到所需的所有封锁,如果有一个封锁没有申请到,则事务中止。 缺点:在事务开始前很难预先知道哪些数据项需要封锁;一次将所有需要的封锁申请到,可能有些封锁只在事务运行的后期才需要,这就大大降低了系统的并发度。7.5 活锁与死锁DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 l用时间戳的死锁预防根据事务启动时的时间戳设置事务的优先级,越早开始运行的事务优先级越高。为预防死锁,在事务Ti申请的封锁与事务Tj已经拥有的封锁发生冲突时,锁管理器可使用如下两种不同的机制:Wait-die机制:若Ti优先级较高,则

31、Ti可以等待;否则中止事务Ti。Wound-wait机制:若Ti优先级较高,则中止Tj;否则Ti等待。 7.5 活锁与死锁DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 例:假设事务T1、T2、T3的时间戳分别为5,10,20。在Wait-die机制下,若T1申请的封锁被T2拥有,则T1等待;若T3申请的封锁被T2拥有,则T3中止运行做回滚操作。在Wound-wait机制下,若T1申请的封锁被T2拥有,则中止事务T2的运行;若T3申请的封锁被T2拥有,则T3等待。 7.5 活锁与死锁DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机

32、科学 数据库数据库 l若一个事务被中止回滚,当该事务再重新启动时应保持原有的时间戳 。lWait-die机制不是一种抢占机制,越老的事务可能等待的时间越长,而年青的事务与年老事务发生冲突被中止,重新启动后仍可能与年老事务再次发生封锁冲突,于是可能出现年青的事务反复被中止的情况。l在Wound-wait机制中不会出现反复中止的情况。7.5 活锁与死锁DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 7.5.4 7.5.4 死锁的检测及处理死锁的检测及处理 l死锁的检测方法包括超时法和等待图法超时法规定申请锁的事务等待的最长时间。若超过了规定时间,则系统判定

33、出现死锁,此时该事务本身回滚并重启。实现简单可能出现误判等待多长时间合适难以把握 7.5 活锁与死锁DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 l等待图法检测:当且仅当等待图中出现环路时,表示系统中存在死锁。7.5 活锁与死锁DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 死锁的解除选择一个或多个事务撤销,释放这个或这些事务拥有的封锁。7.5 活锁与死锁DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 解除死锁的过程中要解决的问题主要包括:撤销事务的选择。为解除死锁必

34、须回滚处于死锁状态的部分事务。撤销事务的选择原则是事务撤销所需的系统代价最小。系统花费代价的计算与很多因素相关,比如事务已经运行了多久,还需多长时间才能结束;事务已经使用了哪些数据项,还将使用多少数据项;回滚该事务会牵涉多少其它的事务等。事务撤销的程度。事务撤销是全部回滚还是只需部分回滚。最简单的是全部回滚选中事务,然后重新开始。部分回滚的实现需要系统维护更多的事务运行状态信息。7.5 活锁与死锁DataBaseUESTC 电子科技大学电子科技大学 计算机科学计算机科学 数据库数据库 7.6 多粒度封锁 l封锁对象的大小称为封锁粒度(granularity) 它可以是数据库的逻辑单位,如:属性、元组、关系、索引、整个数据库等;也可以是数据库的物理单位,如页、块等 封锁粒度与系统的并发度及资源的消耗是息息相关的。若封锁粒度小,则系统的并发度高,需要更多的系统资源;若封锁粒度大,则系统的并发度低,资源消耗小 不同的事务在运行过程中可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论