




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、DATABASEUESTC学以致用学以致用 用以促学用以促学数据库原理及应用数据库原理及应用第第7章章 并发控制并发控制电子科技大学电子科技大学 计算机学院计算机学院郑莉华郑莉华 cd_cd_20212021年年7 7月月2020日星期二日星期二DATABASEUESTC学以致用学以致用 用以促学用以促学Click to add TitleClick to add Title1 1 事务并发事务并发1 1Click to add TitleClick to add Title2 2 并发事务引起的问题并发事务引起的问题2 2Click to add TitleClick to add Titl
2、e2 2 可串行化可串行化3 3Click to add TitleClick to add Title1 1 基于锁的并发控制协议基于锁的并发控制协议4 4Click to add TitleClick to add Title1 1 * *活锁与死锁活锁与死锁 5 5Click to add TitleClick to add Title2 2 * *多粒度封锁多粒度封锁3 3DATABASEUESTC学以致用学以致用 用以促学用以促学 nI/OI/O与与CPUCPU等可以并行交叉运行等可以并行交叉运行n并发执行的优点并发执行的优点u改善系统的资源利用率改善系统的资源利用率 u减少短事务的
3、等待时间减少短事务的等待时间n调度调度(schedule)(schedule)u一个或多个事务的操作按时间排序的一个序列。一个或多个事务的操作按时间排序的一个序列。 一个事务的两个操作在调度中出现的顺序必须与其在事务内定义的先后顺序一致。DATABASEUESTC学以致用学以致用 用以促学用以促学Click to add TitleClick to add Title1 1 事务并发事务并发1 1Click to add TitleClick to add Title2 2 并发事务引起的问题并发事务引起的问题2 2Click to add TitleClick to add Title2 2
4、 可串行化可串行化3 3Click to add TitleClick to add Title1 1 基于锁的并发控制协议基于锁的并发控制协议4 4Click to add TitleClick to add Title1 1 * *活锁与死锁活锁与死锁 5 5Click to add TitleClick to add Title2 2 * *多粒度封锁多粒度封锁3 3DATABASEUESTC学以致用学以致用 用以促学用以促学 n读脏数据(读脏数据(dirty readdirty read)u脏数据脏数据(dirty data)(dirty data)是对未提交事务所写数据的统称。是对未
5、提交事务所写数据的统称。 若脏读就造成了数据库的不一若脏读就造成了数据库的不一致状态,应严格禁止。致状态,应严格禁止。 若脏读带来的影响足够小,偶若脏读带来的影响足够小,偶尔可读一次脏数据,它可以提高尔可读一次脏数据,它可以提高并发性,减少事务的等待时间并发性,减少事务的等待时间 DATABASEUESTC学以致用学以致用 用以促学用以促学 n不可重复读不可重复读(unrepeatable read) (unrepeatable read) 事务事务T1T1的两次读取数据之间,其它的两次读取数据之间,其它事务修改了它要读取的数据,以致事务修改了它要读取的数据,以致两次读到的值不同两次读到的值不
6、同 在事务串行执行时,不会出现此现在事务串行执行时,不会出现此现象象 DATABASEUESTC学以致用学以致用 用以促学用以促学 n丢失更新丢失更新(lost update)(lost update)由两个事务对同一数据并发由两个事务对同一数据并发地写入引起地写入引起 DATABASEUESTC学以致用学以致用 用以促学用以促学Click to add TitleClick to add Title1 1 事务并发事务并发1 1Click to add TitleClick to add Title2 2 并发事务引起的问题并发事务引起的问题2 2Click to add TitleClic
7、k to add Title2 2 可串行化可串行化3 3Click to add TitleClick to add Title1 1 基于锁的并发控制协议基于锁的并发控制协议4 4Click to add TitleClick to add Title1 1 * *活锁与死锁活锁与死锁 5 5Click to add TitleClick to add Title2 2 * *多粒度封锁多粒度封锁3 3DATABASEUESTC学以致用学以致用 用以促学用以促学 n回顾:事务回顾:事务ACIDACID特性中的隔离性?特性中的隔离性?事务在运行中不受其它事务干扰的方法:事务在运行中不受其它事
8、务干扰的方法:l串行:串行:u每个事务依次顺序执行每个事务依次顺序执行 l并行但控制:并行但控制:u事务之间并发执行,事务之间并发执行,DBMSDBMS调整事务的调度,使其运行结调整事务的调度,使其运行结果与一次只执行一个事务的结果相同果与一次只执行一个事务的结果相同DATABASEUESTC学以致用学以致用 用以促学用以促学 n串行调度:不同事务的活动在调度中是一个接一个执行串行调度:不同事务的活动在调度中是一个接一个执行的,没有交叉的运行。的,没有交叉的运行。两个串行调度的结果不同。但只要保持了数据库的一致性,最终的结果并不重要 DATABASEUESTC学以致用学以致用 用以促学用以促学
9、 n可串行化调度可串行化调度u调度是可串行化的:多个事务交叉调度的结果与某一个串行调度的结调度是可串行化的:多个事务交叉调度的结果与某一个串行调度的结果相同果相同uDBMSDBMS认为事务串行调度的结果保持了数据库的一致性,都是正确的认为事务串行调度的结果保持了数据库的一致性,都是正确的 u一个调度如果是可串行化的,系统认为其调度是一个正确的调度,保一个调度如果是可串行化的,系统认为其调度是一个正确的调度,保持了数据库的一致性持了数据库的一致性并行调度与串行调度的结果相同,因此该调度是可串行的调度 DATABASEUESTC学以致用学以致用 用以促学用以促学 nDBMSDBMS需要事务调度管理
10、需要事务调度管理u如果将事务的并发执行完全交给操作系统,则任何一种调度方式都有如果将事务的并发执行完全交给操作系统,则任何一种调度方式都有可能出现。可能出现。u有的调度能保持数据库的一致,有的调度却会产生错误的结果。有的调度能保持数据库的一致,有的调度却会产生错误的结果。uDBMSDBMS必须对事务的运行加以控制,确保交叉调度完毕后的结果与某一必须对事务的运行加以控制,确保交叉调度完毕后的结果与某一串行调度的结果相同,数据库不会出现不一致的状态。串行调度的结果相同,数据库不会出现不一致的状态。 丢失更新!丢失更新!两个调度的结果不一致,是一个不可串行化的调度。DATABASEUESTC学以致用
11、学以致用 用以促学用以促学 n简记符号简记符号uWRITEWRITE简写为简写为W W,uREADREAD简写为简写为R R,uWT(X)WT(X):事务:事务T T写数据库元素写数据库元素X X,uRT(X)RT(X):事务:事务T T读数据库元素读数据库元素X X,uS S表示一个调度。表示一个调度。n调度调度( (事务序列事务序列) )表示:表示:uS = R1(A) R2(A) W1(A) W2(A) R2(B) R1(B) W2(B) W1(B) S = R1(A) R2(A) W1(A) W2(A) R2(B) R1(B) W2(B) W1(B) DATABASEUESTC学以致用
12、学以致用 用以促学用以促学 n指令冲突性指令冲突性u读相同数据:不冲突读相同数据:不冲突l 若事务Ti 和Tj都是读取数据A,则Ri(A),Rj(A)指令不发生冲突。u读写相同数据:冲突读写相同数据:冲突l 若事务Ti 和Tj一个是读数据,一个是写数据,则事务的执行顺序是重要的。Ri(A)和Wj(A)指令是冲突的。u写相同数据:冲突写相同数据:冲突l 若事务Ti 和Tj都是写数据A,则Wi(A)和Wj(A)指令也是冲突的。u读写不同数据:不冲突读写不同数据:不冲突n示例示例 uS = R1(A) R2(A) W1(A) W2(A) R2(B) R1(B) W2(B) W1(B)S = R1(A
13、) R2(A) W1(A) W2(A) R2(B) R1(B) W2(B) W1(B)uT2T2事务的事务的READREAD(A A)与)与T1T1事务的事务的WRITEWRITE(A A)是冲突指令)是冲突指令uT1T1事务的事务的READREAD(A A)与)与T2T2事务的事务的READREAD(A A)指令是不冲突。)指令是不冲突。调度中两个事务发生冲突,必须:调度中两个事务发生冲突,必须:对同一数据对象进行操作对同一数据对象进行操作两个操作指令中有一个是写操作两个操作指令中有一个是写操作W W DATABASEUESTC学以致用学以致用 用以促学用以促学 n冲突等价:冲突等价:u若调
14、度若调度S S中属于不同事务的两条操作指令是不冲突的,则可以交换两条指中属于不同事务的两条操作指令是不冲突的,则可以交换两条指令的执行顺序,得到一个新的调度令的执行顺序,得到一个新的调度SS。称调度。称调度S S与调度与调度SS冲突等价的(冲突等价的(conflict equivalentconflict equivalent)。)。n冲突可串行化:冲突可串行化:u若一个调度冲突等价于一个串行调度,则该调度是冲突可串行化的。若一个调度冲突等价于一个串行调度,则该调度是冲突可串行化的。n示例示例u调度调度S= R1(A) W1(A) R2(A) W2(A) R1(B) W1(B) R2(B) W
15、2(B)S= R1(A) W1(A) R2(A) W2(A) R1(B) W1(B) R2(B) W2(B)uR1(B)R1(B)与与W2(A)W2(A)指令不冲突,可以交换执行顺序;指令不冲突,可以交换执行顺序;uR1(B)R1(B)与与R2(A)R2(A)指令不冲突,可以交换执行顺序;指令不冲突,可以交换执行顺序;uW1(B)W1(B)与与W2(A)W2(A)指令不冲突,可以交换执行顺序;指令不冲突,可以交换执行顺序;uW1(B)W1(B)与与R2(A)R2(A)指令不冲突,可以交换执行顺序。指令不冲突,可以交换执行顺序。u调度调度S= R1(A) W1(A) R1(B) W1(B) R2
16、(A) W2(A) R2(B) W2(B)S= R1(A) W1(A) R1(B) W1(B) R2(A) W2(A) R2(B) W2(B) 调度调度S是一个串行调度。是一个串行调度。 调度调度S等价于串行调度等价于串行调度S,是冲突可串行化的。,是冲突可串行化的。DATABASEUESTC学以致用学以致用 用以促学用以促学 n冲突可串行是可串行性的充分条件冲突可串行是可串行性的充分条件调度运行结果与串行调调度运行结果与串行调度度T1T2T3T1T2T3的运行结的运行结果是一致的,但调度不果是一致的,但调度不是冲突可串行的是冲突可串行的 DATABASEUESTC学以致用学以致用 用以促学用
17、以促学 n视图等价视图等价u对同一事务集,如果两个调度对同一事务集,如果两个调度S1S1和和S2S2在任何时候都保证每个事务读取相同在任何时候都保证每个事务读取相同的值,写入数据库的最终状态也是一样的,则称调度的值,写入数据库的最终状态也是一样的,则称调度S1S1和和S2S2视图等价。视图等价。调度调度S1S1和调度和调度S2S2不是视图等价的不是视图等价的调度调度S1S1中中T2T2事务读取的事务读取的A A值是事务值是事务T1T1修改后的值,修改后的值,调度调度S2S2中中T2T2事务读取的事务读取的A A值是事务值是事务T1T1修改前的值。修改前的值。DATABASEUESTC学以致用学
18、以致用 用以促学用以促学 n示例示例调度调度S S和调度和调度SS是视图等价的,因为两个调度中:是视图等价的,因为两个调度中:u事务事务T1T1读取的都是数据库的初始值读取的都是数据库的初始值u事务事务T2T2读取的数据都是事务读取的数据都是事务T1T1修改后的值修改后的值u数据库中药品数据库中药品A A、B B的最终状态都是由事务的最终状态都是由事务T2T2写入的。写入的。 DATABASEUESTC学以致用学以致用 用以促学用以促学 n视图可串行化视图可串行化u如果某个调度视图等价于一个串行调度,则称这个调度是视图可串行如果某个调度视图等价于一个串行调度,则称这个调度是视图可串行化的化的
19、n如果调度是冲突可串行化的,则该调度一定是视图可如果调度是冲突可串行化的,则该调度一定是视图可串行化的。但反过来未必成立。串行化的。但反过来未必成立。n举例举例u设调度设调度S1= R1(A) W3(A) R2(B) W1(B)S1= R1(A) W3(A) R2(B) W1(B)u经过非冲突调整,经过非冲突调整,S2 = R2(B) R1(A) W1(B) W3(A)S2 = R2(B) R1(A) W1(B) W3(A)u调度调度S1S1和调度和调度S2S2是冲突等价的。是冲突等价的。u又因为调度又因为调度S2S2为一串行调度,因此调度为一串行调度,因此调度S1S1是冲突可串行化的。是冲突
20、可串行化的。u对于调度对于调度S1S1和和S2S2,事务,事务T1T1读取的读取的A A、事务、事务T2T2读取的读取的B B都是数据库的初始都是数据库的初始值;数据库最终的值;数据库最终的A A、B B值都是由事务值都是由事务T3T3和和T1T1写入的。写入的。u因此,调度因此,调度S1S1和和S2S2是视图可串行化的。是视图可串行化的。DATABASEUESTC学以致用学以致用 用以促学用以促学 n判定一个调度是否是冲突可串行化的,可以使用前驱判定一个调度是否是冲突可串行化的,可以使用前驱图(图(precedence graphprecedence graph)u若前驱图中存在环,则表示调
21、度若前驱图中存在环,则表示调度S S是不可串行化的。是不可串行化的。u反之,若前驱图中不存在环,表示调度反之,若前驱图中不存在环,表示调度S S是冲突可串行化的,可用拓是冲突可串行化的,可用拓扑排序得到调度扑排序得到调度S S 的一个等价的串行调度。的一个等价的串行调度。前驱图是一个有向图前驱图是一个有向图G=G=(V V,E E)顶点代表调度顶点代表调度S S 中的事务中的事务由由TiTj TiTj 的边表示在调度的边表示在调度S S中中Ti Ti 和和TjTj之间存在一对冲突指令,之间存在一对冲突指令,并且并且TiTi中的指令先于中的指令先于Tj Tj 中的指令执行。中的指令执行。DATA
22、BASEUESTC学以致用学以致用 用以促学用以促学 n示例示例1 1uS = R1(A) S = R1(A) W1(A) R2(A) W1(A) R2(A) W2(A) R1(B) W2(A) R1(B) W1(B) R2(B) W1(B) R2(B) W2(B)W2(B)u冲突指令冲突指令W1(A)W1(A)在在R2(A)R2(A)前,前,W1(B)W1(B)在在R2(B)R2(B)前,因此存在从前,因此存在从T1T1到到T2T2的有的有向边。向边。n示例示例2 2uS = R1(A) S = R1(A) R2(A) R2(A) W1(A) W1(A) W2(A) W2(A) R2(B)
23、R2(B) R1(B) R1(B) W2(B) W2(B) W1(B)W1(B)uW1(A)W1(A)在在W2(A)W2(A)之前,之前,R1(B)R1(B)在在W2(B)W2(B)之前,因此存在之前,因此存在T1T1到到T2T2的有向边;的有向边;uR2(A)R2(A)在在W1(A)W1(A)之前,之前,W2(B)W2(B)在在W1(B)W1(B)之前,因此存在之前,因此存在T2T2到到T1T1的有向边。的有向边。 DATABASEUESTC学以致用学以致用 用以促学用以促学 n数据库系统要求所有的调度都是可恢复的数据库系统要求所有的调度都是可恢复的 可恢复条件:可恢复条件:调度调度S S中
24、,事务中,事务TiTi如果读取了事如果读取了事务务TjTj修改过的数据,则事务修改过的数据,则事务TiTi必须等事务必须等事务TjTj提交后才能提交提交后才能提交 。DATABASEUESTC学以致用学以致用 用以促学用以促学 n事务在并行执行过程中发生故障,还可能引起多事务在并行执行过程中发生故障,还可能引起多个事务的级联回滚。个事务的级联回滚。【例:级联读脏】l 假定T2事务读取A 的值并修改;l 还有T3事务读取T2修改后的值,并做了修改;依次类推。l 若事务T1发生故障时,后续的事务T2、T3、T4.都已提交,则事务T1的回滚导致级联回滚,产生大量的撤销工作。 无级联回滚的调度应满足:
25、无级联回滚的调度应满足:调度S中的每对事务Ti和Tj,事务Ti如果读取了事务Tj修改过的数据,则事务Tj必须在Ti读取前提交即调度禁止读取脏数据。 DATABASEUESTC学以致用学以致用 用以促学用以促学Click to add TitleClick to add Title1 1 事务并发事务并发1 1Click to add TitleClick to add Title2 2 并发事务引起的问题并发事务引起的问题2 2Click to add TitleClick to add Title2 2 可串行化可串行化3 3Click to add TitleClick to add Ti
26、tle1 1 基于锁的并发控制协议基于锁的并发控制协议4 4Click to add TitleClick to add Title1 1 * *活锁与死锁活锁与死锁 5 5Click to add TitleClick to add Title2 2 * *多粒度封锁多粒度封锁3 3DATABASEUESTC学以致用学以致用 用以促学用以促学 n封锁封锁u指事务在对数据库进行读、写操作之前,必须先得到对操作指事务在对数据库进行读、写操作之前,必须先得到对操作对象的控制权力。对象的控制权力。u先要对将执行读、写操作的数据库对象申请锁,在获得该数先要对将执行读、写操作的数据库对象申请锁,在获得该
27、数据库对象的控制权力后,才能进行相应地读、写操作。据库对象的控制权力后,才能进行相应地读、写操作。u封锁是实现数据库并发控制的重要手段。封锁是实现数据库并发控制的重要手段。n锁管理器(锁管理器(lock managerlock manager)u事务执行过程中锁的申请和释放由事务执行过程中锁的申请和释放由DBMSDBMS中的锁管理器负责中的锁管理器负责 u锁管理器维护一张哈希表锁管理器维护一张哈希表锁表锁表u对每个数据库对象,如果其上有锁,那么锁表指明持有该锁对每个数据库对象,如果其上有锁,那么锁表指明持有该锁的事务。的事务。u锁表包含的信息包括:每个数据库对象上已有的锁的个数、锁表包含的信息
28、包括:每个数据库对象上已有的锁的个数、锁的类型以及一个指向申请锁队列的指针。锁的类型以及一个指向申请锁队列的指针。DATABASEUESTC学以致用学以致用 用以促学用以促学 n锁的类型锁的类型u共享锁(共享锁(S S锁):如果事务锁):如果事务TiTi申请到数据项申请到数据项Q Q 的共享锁,则的共享锁,则TiTi可以读数据项可以读数据项Q Q,但不能写,但不能写Q Q。u排它锁(排它锁(X X锁):如果事务锁):如果事务TiTi申请到数据项申请到数据项Q Q 的排它锁,则的排它锁,则TiTi可以读数据项可以读数据项Q Q,也可以写,也可以写Q Q。n锁的相容性锁的相容性DATABASEUE
29、STC学以致用学以致用 用以促学用以促学 n当事务需要操作数据项时,它向锁管理器发出锁当事务需要操作数据项时,它向锁管理器发出锁的申请:的申请:u若申请的是一个共享锁,且申请队列为空,当前数据项上也若申请的是一个共享锁,且申请队列为空,当前数据项上也没有排它锁,则锁管理器授予锁,并修改数据项的锁表。没有排它锁,则锁管理器授予锁,并修改数据项的锁表。u若申请的是一个排它锁,当前也没有其它的事务拥有该数据若申请的是一个排它锁,当前也没有其它的事务拥有该数据项上的锁,则锁管理器授予锁,并修改数据项的锁表。项上的锁,则锁管理器授予锁,并修改数据项的锁表。u否则,申请的锁不能马上授予,锁申请加入申请队列
30、,申请否则,申请的锁不能马上授予,锁申请加入申请队列,申请锁的事务挂起。锁的事务挂起。 DATABASEUESTC学以致用学以致用 用以促学用以促学 更新后立即释放锁,可能脏读。事务的最后释放锁,避免脏读和确保可串行性。但降低并发度相互等待出现死锁DATABASEUESTC学以致用学以致用 用以促学用以促学 n两段锁协议(两段锁协议(two-phase locking protocoltwo-phase locking protocol,2PL2PL)是)是指所有事务分两个阶段提出加锁和解锁申请指所有事务分两个阶段提出加锁和解锁申请: :u增长阶段(增长阶段(growing phase)gro
31、wing phase):在对任何数据进行读、写操作之前,:在对任何数据进行读、写操作之前,首先申请并获得该数据的封锁;首先申请并获得该数据的封锁;u收缩阶段(收缩阶段(shrinking phase)shrinking phase):在释放一个封锁后,事务不再申请:在释放一个封锁后,事务不再申请和获得其它的任何封锁。和获得其它的任何封锁。 n两段锁协议是保证冲突可串行化的充分条件,但该协两段锁协议是保证冲突可串行化的充分条件,但该协议不保证不发生死锁。议不保证不发生死锁。DATABASEUESTC学以致用学以致用 用以促学用以促学 n两段锁协议的级联回滚现象两段锁协议的级联回滚现象每个事务都遵
32、从两段锁协议;若T1事务在WRITE(B)时刻发生故障,将导致事务T2、T3级联回滚。 DATABASEUESTC学以致用学以致用 用以促学用以促学 n严格两阶段锁严格两阶段锁u除要求满足两段锁协议规定外,还要求事务的除要求满足两段锁协议规定外,还要求事务的排它锁排它锁必须在事务提交必须在事务提交之后释放。之后释放。 u解决级联回滚问题解决级联回滚问题u避免了脏读和丢失修改的问题。避免了脏读和丢失修改的问题。n强两阶段锁强两阶段锁u除要求满足两段锁协议规定外,还要求事务的除要求满足两段锁协议规定外,还要求事务的所有锁所有锁都必须在事务提都必须在事务提交之后释放。交之后释放。u进一步解决数据项不
33、能重复读的问题进一步解决数据项不能重复读的问题 DATABASEUESTC学以致用学以致用 用以促学用以促学 n两阶段锁总结两阶段锁总结 u从两段锁协议到严格两段锁协议,再到强两段锁协议,事务持锁的时从两段锁协议到严格两段锁协议,再到强两段锁协议,事务持锁的时间不断增长。这不但保证事务的并发调度是冲突可串行化的,还不断间不断增长。这不但保证事务的并发调度是冲突可串行化的,还不断增强了数据库的一致性保证。增强了数据库的一致性保证。u但带来的另一方面的问题是并发度的降低,以及死锁出现可能性的增但带来的另一方面的问题是并发度的降低,以及死锁出现可能性的增加。加。u目前,大多数的目前,大多数的DBMS
34、DBMS都采用严格两段锁协议或强两段锁协议。都采用严格两段锁协议或强两段锁协议。DATABASEUESTC学以致用学以致用 用以促学用以促学 n锁的升级及更新锁锁的升级及更新锁l锁的升级有可能使得出现死锁的概率加大 l更新锁只允许事务读取数据项而不能修改数据项l系统允许更新锁升级,而不允许共享锁升级 DATABASEUESTC学以致用学以致用 用以促学用以促学 n更新锁相容矩阵更新锁相容矩阵DATABASEUESTC学以致用学以致用 用以促学用以促学Click to add TitleClick to add Title1 1 事务并发事务并发1 1Click to add TitleClic
35、k to add Title2 2 并发事务引起的问题并发事务引起的问题2 2Click to add TitleClick to add Title2 2 可串行化可串行化3 3Click to add TitleClick to add Title1 1 基于锁的并发控制协议基于锁的并发控制协议4 4Click to add TitleClick to add Title1 1 * *活锁与死锁活锁与死锁 5 5Click to add TitleClick to add Title2 2 * *多粒度封锁多粒度封锁3 3DATABASEUESTC学以致用学以致用 用以促学用以促学 n活锁
36、或饿死活锁或饿死解决活锁方法:采用先来先服务的策略。采用先来先服务的策略。 DATABASEUESTC学以致用学以致用 用以促学用以促学 n死锁死锁死锁的两种处理方式:死锁的两种处理方式:一种是进行死锁的预防,不让并发一种是进行死锁的预防,不让并发执行的事务出现死锁的状况;执行的事务出现死锁的状况;一种是允许死锁的发生,在死锁出一种是允许死锁的发生,在死锁出现后采取措施解决,为此系统中需现后采取措施解决,为此系统中需增加死锁的检测及死锁的解除算法增加死锁的检测及死锁的解除算法 DATABASEUESTC学以致用学以致用 用以促学用以促学 n顺序封锁法顺序封锁法u将数据库对象按某种规定的顺序排列
37、,要求事务实行封锁也必须按照将数据库对象按某种规定的顺序排列,要求事务实行封锁也必须按照这个顺序进行。这个顺序进行。 u缺点:缺点:l 不好确定数据库对象的封锁顺序。l 维护封锁顺序是件困难的事情且成本很高n一次封锁法一次封锁法u要求事务在开始执行前先申请到所需的所有封锁,如果有一个封锁没要求事务在开始执行前先申请到所需的所有封锁,如果有一个封锁没有申请到,则事务中止。有申请到,则事务中止。 u缺点:缺点:l 在事务开始前很难预先知道哪些数据项需要封锁;l 一次将所有需要的封锁申请到,可能有些封锁只在事务运行的后期才需要,这就大大降低了系统的并发度。DATABASEUESTC学以致用学以致用
38、用以促学用以促学 n时间戳法时间戳法u根据事务启动时的时间戳设置事务的优先级,越早开始运行的事务优根据事务启动时的时间戳设置事务的优先级,越早开始运行的事务优先级越高。先级越高。u为预防死锁,在事务为预防死锁,在事务TiTi申请的封锁与事务申请的封锁与事务TjTj已经拥有的封锁发生冲突已经拥有的封锁发生冲突时,锁管理器可使用如下两种不同的机制:时,锁管理器可使用如下两种不同的机制:uWait-dieWait-die机制:机制:若若TiTi优先级较高,则优先级较高,则TiTi可以等待;否则中止事务可以等待;否则中止事务TiTi。uWound-waitWound-wait机制:机制:若若TiTi优
39、先级较高,则中止优先级较高,则中止TjTj;否则;否则TiTi等待。等待。n示例:示例:假设事务假设事务T1T1、T2T2、T3T3的时间戳分别为的时间戳分别为5 5,1010,2020。u在在Wait-dieWait-die机制下:机制下:l 若若T1申请的封锁被申请的封锁被T2拥有,则拥有,则T1等待;等待;l T3申请的封锁被申请的封锁被T2拥有,则拥有,则T3中止运行做回滚操作。中止运行做回滚操作。u在在Wound-waitWound-wait机制下:机制下:l 若若T1申请的封锁被申请的封锁被T2拥有,则中止事务拥有,则中止事务T2的运行;的运行;l 若若T3申请的封锁被申请的封锁被
40、T2拥有,则拥有,则T3等待。等待。 DATABASEUESTC学以致用学以致用 用以促学用以促学 n超时法:超时法:u规定申请锁事务等待的最长时间。若超过了规定时间,则系统判定出规定申请锁事务等待的最长时间。若超过了规定时间,则系统判定出现死锁,此时该事务本身回滚并重启。现死锁,此时该事务本身回滚并重启。u实现简单实现简单u可能出现误判可能出现误判u等待多长时间合适难以把握等待多长时间合适难以把握 n等待图法:等待图法:u当且仅当等待图中出现环路时,表示系统中存在死锁。当且仅当等待图中出现环路时,表示系统中存在死锁。DATABASEUESTC学以致用学以致用 用以促学用以促学 n死锁的解除死
41、锁的解除u选择一个或多个事务撤销,释放这个或这些事务拥有的封锁。选择一个或多个事务撤销,释放这个或这些事务拥有的封锁。n撤销事务的选择。撤销事务的选择。u为解除死锁必须回滚处于死锁状态的部分事务。为解除死锁必须回滚处于死锁状态的部分事务。u撤销事务的选择原则是事务撤销所需的系统代价最小。撤销事务的选择原则是事务撤销所需的系统代价最小。n事务撤销的程度。事务撤销的程度。u全部回滚选中事务,然后重新开始。全部回滚选中事务,然后重新开始。u部分回滚选中事务,需要系统维护更多的事务运行状态信息。部分回滚选中事务,需要系统维护更多的事务运行状态信息。DATABASEUESTC学以致用学以致用 用以促学用以促学Click to add TitleClick to add Title1 1 事务并发事务并发1 1Click to add TitleClick to add Title2 2 并发事务引起的问题并
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高考物理“状态判断”准确识别试题
- 工业测试考试题及答案
- 职员守秘合同及信息保护承诺函7篇范文
- 高考试题地理分类及答案
- 供应链合作伙伴评估指标模板
- 高等选矿学考试题及答案
- 指南语言领域试卷及答案
- 九绵高速公路模拟考试题及答案
- 公司冷藏品运输合同5篇
- 2025年中考语文陕西试卷及答案
- 人机工程学-人体感受系统-课件
- 乡村振兴汇报模板
- 津16D19 天津市住宅区及住宅建筑内光纤到户通信设施标准设计图集 DBJT29-205-2016
- 心肺复苏(CPR)培训考核试题及答案
- 开展健康生活方式、营养和慢性病预防知识教育和宣传活动
- 高分子物理-第2章-聚合物的凝聚态结构课件
- CNAS体系基础知识培训课件
- 特种设备制造内审及管理评审资料汇编经典版
- 河蟹健康养殖与常见疾病防治技术课件
- 小学二年级《爱国主义教育》主题班会课件
- 儿童牙外伤讲稿
评论
0/150
提交评论