《2022年并发控制精选完整版》由会员分享,可在线阅读,更多相关《2022年并发控制精选完整版(36页珍藏版)》请在金锄头文库上搜索。
1、第第8 8章章 并发控制并发控制学习目的和要求为何要并发?为何要并发?并发执行可能引起哪些问题?并发执行可能引起哪些问题?如何知道实行并发后结果是正确的?如何知道实行并发后结果是正确的?并发执行如何控制实现?并发执行如何控制实现?死锁的检测、处理和防止死锁的检测、处理和防止 SQL Server中的锁与加锁中的锁与加锁1Designed by Tao Hongcai作者作者:眼猿眼猿(笔名笔名)文档编码文档编码:CPLPWHIHV HXMJYAWJQ Z109353699 这是第这是第1页页第第8章章 并发控制学习目的和要求为何要并发?并发执行可能引起哪些问题?并发控制学习目的和要求为何要并发
2、?并发执行可能引起哪些问题?如何知道实行并发后结果是正确的?并发执行如何控制实现?如何知道实行并发后结果是正确的?并发执行如何控制实现?死锁的检测、处理和防止死锁的检测、处理和防止 SQL Server中的锁与加锁中的锁与加锁Designed by Tao Hongcai8.1 并发控制导论并发控制导论1.数据库系统中的并发事务串行访问(Serial Access):事务顺序执行,一个事务完全结束后才开始另一事务。并发访问(Concurrent Access):多个事务同时执行,即各事务中的操作可交错执行。操作的交错执行:需要调度(Schedule)。2.调度概念调度:“事务集”中的一串有序操
3、作集。对调度的要求:一个事务中操作在调度中的顺序应该与它们在事务中的顺序一致。每个事务最后的行动:COMMIT和ROLLBACK。调度的表示:SR(A)W(A)R(B)W(B)R(C)W(C)2Designed by Tao Hongcai作者作者:眼猿眼猿(笔名笔名)文档编码文档编码:CPLPWHIHV HXMJYAWJQ Z109353699 这是第这是第2页页8.1 并发控制导论并发控制导论1.数据库系统中的并发事务串行访问数据库系统中的并发事务串行访问(Serial Access):事务顺序执行,一个事务完全结束后才开始另一事务。并发访问:事务顺序执行,一个事务完全结束后才开始另一事务
4、。并发访问(Concurrent Access):多个事务同时执行,即各事务中的操作可交错执行。操作的交错执行:需要调度(:多个事务同时执行,即各事务中的操作可交错执行。操作的交错执行:需要调度(Schedule)。)。2.调度概念调度:调度概念调度:“事务集事务集”中的一串有序操作集。对调度的要求:一个事务中操作在调度中的顺序应该与它们在事务中的顺序一致。每个事务最后的行动:中的一串有序操作集。对调度的要求:一个事务中操作在调度中的顺序应该与它们在事务中的顺序一致。每个事务最后的行动:COMMIT和和ROLLBACK。调度的表示:。调度的表示:SR(A)W(A)R(B)W(B)R(C)W(C
5、)Designed by Tao Hongcai 3.并发的目的(与串行执行比较)可回答第一个问题。改善系统的资源利用率;改善短事务的响应时间。3Designed by Tao Hongcai作者作者:眼猿眼猿(笔名笔名)文档编码文档编码:CPLPWHIHV HXMJYAWJQ Z109353699 这是第这是第3页页 3.并发的目的(与串行执行比较)可回答第一个问题。并发的目的(与串行执行比较)可回答第一个问题。改善系统的资源利用率;改善系统的资源利用率;改善短事务的响应时间。改善短事务的响应时间。Designed by Tao Hongcai8.2 并发执行可能引起的问题并发执行可能引起的
6、问题 事务如不加控制地并发执行,会产生如下三个问题。原因:因两个事务对同一数据并发地写入引起,称写-写冲突(write-write conflict)。1.丢失更新(Lost Update)亦称:覆盖未提交的数据(Overwriting Uncommitted Data)。结果:与串行地执行两个事务的结果不一致。4Designed by Tao Hongcai作者作者:眼猿眼猿(笔名笔名)文档编码文档编码:CPLPWHIHV HXMJYAWJQ Z109353699 这是第这是第4页页8.2 并发执行可能引起的问题并发执行可能引起的问题 事务如不加控制地并发执行,会产生如下三个问题。事务如不加
7、控制地并发执行,会产生如下三个问题。原因:因两个事务对同一数据并发地写入引起,称写原因:因两个事务对同一数据并发地写入引起,称写-写冲突写冲突(write-write conflict)。1.丢失更新丢失更新(Lost Update)亦称:覆盖未提交的数据亦称:覆盖未提交的数据(Overwriting Uncommitted Data)。结果:与串行地执行两个事务的结果不一致。结果:与串行地执行两个事务的结果不一致。Designed by Tao Hongcai 原因:由于一事务读另一事务尚未提交的数据引起,称为写-读冲突(write-read conflict)。2.读脏数据(Dirty R
8、ead)亦称:读未提交的数据(Reading Uncommitted Data)。结果:有可能读到要回退的数据。5Designed by Tao Hongcai作者作者:眼猿眼猿(笔名笔名)文档编码文档编码:CPLPWHIHV HXMJYAWJQ Z109353699 这是第这是第5页页 原因:由于一事务读另一事务尚未提交的数据引起,称为写原因:由于一事务读另一事务尚未提交的数据引起,称为写-读冲突读冲突(write-read conflict)。2.读脏数据读脏数据(Dirty Read)亦称:读未提交的数据亦称:读未提交的数据(Reading Uncommitted Data)。结果:有可
9、能读到要回退的数据。结果:有可能读到要回退的数据。Designed by Tao Hongcai 原因:该问题因读-写冲突(read-write conflict)引起。3.读值不可复现(Unrepeatable Read)结果:第二次读的值与前次读的值不同。结论:由上可以看出,把不同事务中对同一对象进行WW、RW或WR的操作进行交错都会造成冲突,因此,在安排事务操作交错(即并发执行)时,应避免把这类操作放在一起。6Designed by Tao Hongcai作者作者:眼猿眼猿(笔名笔名)文档编码文档编码:CPLPWHIHV HXMJYAWJQ Z109353699 这是第这是第6页页 原因
10、:该问题因读原因:该问题因读-写冲突写冲突(read-write conflict)引起。引起。3.读值不可复现读值不可复现(Unrepeatable Read)结果:第二次读的值与前次读的值不同。结果:第二次读的值与前次读的值不同。结论:由上可以看出,把不同事务中对同一对象进行结论:由上可以看出,把不同事务中对同一对象进行WW、RW或或WR的操作进行交错都会造成冲突,因此,在安排事务操作交错(即并发执行)时,应避免把这类操作放在一起。的操作进行交错都会造成冲突,因此,在安排事务操作交错(即并发执行)时,应避免把这类操作放在一起。Designed by Tao Hongcai8.3 并发执行的
11、正确性准则并发执行的正确性准则1.基本概念 事务调度原则:调度中,不同事务的操作可以交叉,但需保持各个事务的操作次序。事务调度(Schedule):是一串事务中所有操作的顺序序列。并发原则:既要交错执行,以充分利用系统资源;又要避免访问冲突。约定:为便于问题描述,假定DB对象O总被读入程序的O变量,将事务T中读对象O的操作表示为RT(O),写表示成WT(O),或用事务号作下标。调度描述:S=.R1(x).W2(x).R1(x).本节内容回答第三个问题,即:如何知道或判定并发执行后结果是否正确呢?7Designed by Tao Hongcai作者作者:眼猿眼猿(笔名笔名)文档编码文档编码:CP
12、LPWHIHV HXMJYAWJQ Z109353699 这是第这是第7页页8.3 并发执行的正确性准则并发执行的正确性准则1.基本概念基本概念 事务调度原则:调度中,不同事务的操作可以交叉,但需保持各个事务的操作次序。事务调度原则:调度中,不同事务的操作可以交叉,但需保持各个事务的操作次序。事务调度事务调度(Schedule):是一串事务中所有操作的顺序序列。:是一串事务中所有操作的顺序序列。并发原则:既要交错执行,以充分利用系统资源;又要避免访问冲突。并发原则:既要交错执行,以充分利用系统资源;又要避免访问冲突。约定:为便于问题描述,假定约定:为便于问题描述,假定DB对象对象O总被读入程序
13、的总被读入程序的O变量,将事务变量,将事务T中读对象中读对象O的操作表示为的操作表示为RT(O),写表示成,写表示成WT(O),或用事务号作下标。,或用事务号作下标。调度描述:调度描述:S=.R1(x).W2(x).R1(x).本节内容回答第三个问题,即:如何知道或判定并发执行后结果是否正确呢?本节内容回答第三个问题,即:如何知道或判定并发执行后结果是否正确呢?Designed by Tao Hongcai2.等价调度 考虑冲突操作:不同事务的一对操作,有些是冲突的,有些是不冲突的。目标等价(View Equivalence):以上的调度等价定义是一个普遍定义,亦称为目标等价。调度等价:如有两
14、个调度S1和S2,在DB的任一初始状态下,所有读出的数据都是一样的,留给DB的最终状态也是一样的,则称S1和S2是等价(Equivalence)的。冲突等价(Conflict Equivalence):凡是通过调换S中不冲突操作所得的新调度,称S的冲突等价调度。结论:如两个调度是冲突等价的,则一定是目标等价的;反之不亦然。问题提出:对同一事务集,可能有多种调度。8Designed by Tao Hongcai作者作者:眼猿眼猿(笔名笔名)文档编码文档编码:CPLPWHIHV HXMJYAWJQ Z109353699 这是第这是第8页页2.等价调度等价调度 考虑冲突操作:不同事务的一对操作,有些
15、是冲突的,有些是不冲突的。考虑冲突操作:不同事务的一对操作,有些是冲突的,有些是不冲突的。目标等价目标等价(View Equivalence):以上的调度等价定义是一个普遍定义,亦称为目标等价。:以上的调度等价定义是一个普遍定义,亦称为目标等价。调度等价:如有两个调度调度等价:如有两个调度S1和和S2,在,在DB的任一初始状态下,所有读出的数据都是一样的,留给的任一初始状态下,所有读出的数据都是一样的,留给DB的最终状态也是一样的,则称的最终状态也是一样的,则称S1和和S2是等价(是等价(Equivalence)的。)的。冲突等价(冲突等价(Conflict Equivalence):凡是通过
16、调换):凡是通过调换S中不冲突操作所得的新调度,称中不冲突操作所得的新调度,称S的冲突等价调度。的冲突等价调度。结论:如两个调度是冲突等价的,则一定是目标等价的;反之不亦然。结论:如两个调度是冲突等价的,则一定是目标等价的;反之不亦然。问题提出:对同一事务集,可能有多种调度。问题提出:对同一事务集,可能有多种调度。Designed by Tao Hongcai3.可串行化(Serializability)基本论点:串行调度中,各事务操作没有交错,即不会相互干扰,故不会产生并发引起的问题。推论1:因冲突等价一定是目标等价,故冲突可串行化调度也一定是目标可串行化调度。可串行化分类:对应两个调度等价,可串行化亦分:目标可串行化和冲突可串行化。推论2:可串行化调度与某一串行调度等价,故也不会产生并发所引起的问题。并发执行的正确性准则:在当前的DBMS中,均以“冲突可串行化”作为并发执行的正确性准则。概念:对一事务集,如一个并发调度与一个串行调度等价,则称此并发调度是可串行化的(Serializable)。9Designed by Tao Hongcai作者作者:眼猿眼猿(笔名笔名)文档编码文档