1、第第6章章 数据库的事务处理与数据恢复数据库的事务处理与数据恢复n6.1 事务管理的基本概念事务管理的基本概念n6.2 并发控制并发控制n6.3 数据库恢复数据库恢复6.1 事务管理的基本概念事务管理的基本概念n6.1.1 事务(事务(Transaction)的概念的概念n6.1.2 事务的状态事务的状态n6.1.3 事务的特性事务的特性n6.1.4 SQL Server中的事务中的事务返回首页返回首页6.1.1 事务(事务(Transaction)的概念的概念n事务是用户定义的数据库操作序列,这些操事务是用户定义的数据库操作序列,这些操作可作为一个完整的工作单元。一个事务内作可作为一个完整的
2、工作单元。一个事务内的所有语句是一个整体,要么全部执行,要的所有语句是一个整体,要么全部执行,要么全部不执行。即事务是不可再分的原子性么全部不执行。即事务是不可再分的原子性工作。工作。如在银行业务中,如在银行业务中,“从帐户从帐户A转移资金转移资金X到帐到帐户户B”就是一个典型的事务。这个事务可以分就是一个典型的事务。这个事务可以分解为两个动作:解为两个动作:n(1)从账户)从账户A减去金额减去金额X。n(2)在账户在账户B中加上金额中加上金额X。返回本节返回本节6.1.2 事务的状态事务的状态事务的基本操作包括:事务的基本操作包括:n(1)事务开始()事务开始(BEGIN_TRANSACTI
3、ON)。)。事事务开始执行。务开始执行。n(2)事务读写()事务读写(Read/Write)。)。事务进行数据操事务进行数据操作。作。n(3)事务结束()事务结束(END_TRANSACTION)。)。事务事务完成所有的读完成所有的读/写操作。写操作。n(4)事务交付()事务交付(COMMIT_TRANSACTION)。)。事务完成所有的读事务完成所有的读/写操作,并保存操作结果。写操作,并保存操作结果。返回本节返回本节6.1.3 事务的特性事务的特性n事务所必须具有的重要特性包括:事务所必须具有的重要特性包括:n(1)原子性()原子性(Atomicity)。)。n(2)一致性()一致性(Co
4、nsistency)。)。n(3)隔离性()隔离性(Isolation)。)。n(4)持久性)持久性(Durability)。)。n上述的四个特性也简称为上述的四个特性也简称为ACID特性,保证特性,保证ACID特性是事务处理的重要任务。事务的特性是事务处理的重要任务。事务的ACID特性可能遭到破坏的原因有:特性可能遭到破坏的原因有:n1)多个事务并行运行时,不同事务的操作)多个事务并行运行时,不同事务的操作交叉执行。交叉执行。n2)事务在运行过程中被强迫停止。)事务在运行过程中被强迫停止。返回本节返回本节6.1.4 SQL Server中的事务中的事务nSQL Server的事务分为两种类型
5、:系统提供的事务分为两种类型:系统提供的事务和用户定义的事务。系统提供的事务的事务和用户定义的事务。系统提供的事务是指在执行某些语句时,一条语句就是一个是指在执行某些语句时,一条语句就是一个事务,它的数据对象可能是一个或多个表(事务,它的数据对象可能是一个或多个表(视图),可能是表(视图)中的一行数据或视图),可能是表(视图)中的一行数据或多行数据;用户定义的事务以多行数据;用户定义的事务以BEGIN TRANSACTION语句开始,以语句开始,以COMMIT或或ROLLBACK结束。结束。其中:其中:nBEGIN TRANSACTION:事务的开始标记事务的开始标记。nCOMMIT TRAN
6、SACTION:事务的结束标事务的结束标记。记。nOLLBACK TRANSACTION:回滚。回滚。返回本节返回本节6.2 并发控制并发控制n6.2.1 并发操作引起的问题并发操作引起的问题n6.2.2 封锁封锁n6.2.3 封锁出现的问题及解决方法封锁出现的问题及解决方法n6.2.4 可串行化调度可串行化调度n6.2.5 SQL Server的并发控制机制的并发控制机制返回首页返回首页6.2.1 并发操作引起的问题并发操作引起的问题对事务的并发执行如果不加以控制,可能会导致数据库对事务的并发执行如果不加以控制,可能会导致数据库中数据的不一致性。中数据的不一致性。n一个最常见的并发操作的例子
7、是飞机订票系统中的订票一个最常见的并发操作的例子是飞机订票系统中的订票操作。例如,在该系统中的一个活动的序列:操作。例如,在该系统中的一个活动的序列:n(1)事务)事务T1(动作动作1):甲售票员读出某航班的机票余):甲售票员读出某航班的机票余额额A,设设A=16。n(2)事务事务T2(动作动作1):乙售票员读出同一航班的机票):乙售票员读出同一航班的机票余额,余额,A也为也为16。n(3)事务)事务T1(动作动作2):甲售票员卖出一张机票,修改):甲售票员卖出一张机票,修改机票余额机票余额AA-1,所以所以A=15,把把A写入数据库。写入数据库。n(4)事务)事务T2(动作动作2):乙售票员
8、卖出两张机票,修改):乙售票员卖出两张机票,修改机票余额机票余额AA-2,所以所以A=14,把把A写入数据库。写入数据库。并发操作如果不加以控制,就可能引发下列并发操作如果不加以控制,就可能引发下列数据的不一致性:数据的不一致性:n1丢失修改(丢失修改(Lost Update)n2不可重复读(不可重复读(Unrepeatable Read)n3读读“脏脏”数据(数据(Dirty Read)n1丢失修改(丢失修改(Lost Update)n丢失修改是指事务丢失修改是指事务T1与事务与事务T2从数据库中读从数据库中读入同一数据并修改,事务入同一数据并修改,事务T2提交的修改结果提交的修改结果破坏了
9、事务破坏了事务T1提交的修改结果,导致事务提交的修改结果,导致事务T1的修改被丢失。丢失修改的情况如图的修改被丢失。丢失修改的情况如图6-2所示所示。调度时刻调度时刻事务事务T1事务事务T2t1读读A16 t2 读读A16t3A=A-1写回写回A15 t4 A=A-2写回写回A14(覆盖了覆盖了T1对对A的修改的修改)图图6-2 丢失修改丢失修改n2不可重复读(不可重复读(Unrepeatable Read)n即事务即事务T1两次读取同一数据项两次读取同一数据项A的内容不一的内容不一致。究其原因,是在两次读操作之间,事务致。究其原因,是在两次读操作之间,事务T2也修改了数据项也修改了数据项A。
10、不可重复读的情况如不可重复读的情况如图图6-3所示。所示。调度时刻调度时刻事务事务T1事务事务T2t1读读A50读读B100求和求和150 t2 读读B100BB*2写回写回B=200t3读读A50读读B200求和求和250(验算不对)(验算不对)图图6-3 不可重复读不可重复读n3读读“脏脏”数据(数据(Dirty Read)n即事务即事务T1读取了经过事务读取了经过事务T2修改过的数据,修改过的数据,但是由于事务但是由于事务T2因为流产而撤消了对该数据因为流产而撤消了对该数据的修改,数据库恢复到事务的修改,数据库恢复到事务T2执行前的状态执行前的状态,从而导致事务,从而导致事务T1读取的内
11、容与数据库中的读取的内容与数据库中的内容不一致。读内容不一致。读“脏脏”数据的情况如图数据的情况如图6-4所所示。示。调度时刻调度时刻事务事务T1事务事务T2t1 读读B100BB*2写回写回B=200t2读读B200(读入读入T2的脏数据的脏数据)t3 ROLLBACK(B恢复为恢复为100)图图6-4 读读“脏脏”数据数据返回本节返回本节6.2.2 封锁封锁n1封锁的类型封锁的类型DBMS通常提供了多种类型的封锁。一个事通常提供了多种类型的封锁。一个事务对某个数据对象加锁后究竟拥有什么样的务对某个数据对象加锁后究竟拥有什么样的控制是由封锁类型决定的。基本的封锁类型控制是由封锁类型决定的。基
12、本的封锁类型有两种:排它锁(有两种:排它锁(Exclusive Lock,简称简称X锁锁)和共享锁()和共享锁(Share Lock,简称简称为为S锁)。锁)。n(1)排它锁。)排它锁。n(2)共享锁。)共享锁。n2保证数据一致性的封锁协议保证数据一致性的封锁协议三级封三级封锁协议锁协议所谓封锁协议就是在对数据库加锁、持锁和所谓封锁协议就是在对数据库加锁、持锁和释放锁时所约定的一些规则。例如,应何时释放锁时所约定的一些规则。例如,应何时申请申请X锁或锁或S锁、持锁时间、何时释放等。不锁、持锁时间、何时释放等。不同的封锁规则形成了不同的封锁协议,下面同的封锁规则形成了不同的封锁协议,下面介绍三级
13、封锁协议。介绍三级封锁协议。n(1)一级封锁协议。)一级封锁协议。n(2)二级封锁协议。)二级封锁协议。n(3)三级封锁协议)三级封锁协议n(1)一级封锁协议。)一级封锁协议。一级封锁协议是事务一级封锁协议是事务T在修改数据之前必须在修改数据之前必须先对其加先对其加X锁,直到事务结束才释放。锁,直到事务结束才释放。一级封锁协议可有效防止丢失修改,并保证一级封锁协议可有效防止丢失修改,并保证事务事务T是可恢复的。例如,图是可恢复的。例如,图6-6使用一级封使用一级封锁协议解决了图锁协议解决了图6-2中的丢失修改问题。中的丢失修改问题。调度时刻事务T1事务T2t1获得Xlock A t2读A16X
14、lock A等待t3A=A-1写回A15CommitUnlock A等待等待等待t4 获得Xlock A读A15A=A-2写回A13CommitUnlock A图图6-6没有丢失修改没有丢失修改n(2)二级封锁协议。)二级封锁协议。二级封锁协议是在一级封锁协议加上事务二级封锁协议是在一级封锁协议加上事务T对要读取的数据加对要读取的数据加S锁,读完后即可释放锁,读完后即可释放S锁锁。二级封锁协议除防止了丢失修改还可进一步二级封锁协议除防止了丢失修改还可进一步防止读防止读“脏脏”数据。例如,图数据。例如,图6-7使用二级封使用二级封锁协议解决了图锁协议解决了图6-4中读中读“脏脏”数据的问题。数据
15、的问题。调度时刻调度时刻事务事务T1事务事务T2t1 Xlock B读B100BB*2写回B=200t2SlockB等待 t3 ROLLBACK(B恢复为100)Unlock Bt4获得Slock B读B100Unlock B 图图6-7不读不读“脏脏”数据数据n(3)三级封锁协议。)三级封锁协议。三级封锁协议是事务三级封锁协议是事务T在读取数据之前必须在读取数据之前必须先对其加先对其加S锁,在要修改数据之前必须先对其锁,在要修改数据之前必须先对其加加X锁,直到事务结束后才释放所有的锁。锁,直到事务结束后才释放所有的锁。例如图例如图6-8使用了三级封锁协议解决了图使用了三级封锁协议解决了图6-
16、3中的不可重复读问题。中的不可重复读问题。调度时刻事务T1事务T2t1Slock A读A50Slock B读B100求和150 t2 XlockB等待t3读A50读B100求和150CommitUnlock AUnlock B等待t4 获得Xlock读B100BB*2写回B=200CommitUnlock B图图6-8可重复读可重复读封锁封锁协议协议X锁锁S锁锁不丢失不丢失修改修改不读脏不读脏数据数据可重可重复读复读一级一级事务全程加锁事务全程加锁不加锁不加锁 二级二级事务全程加锁事务全程加锁事务开始加锁,读完即释放事务开始加锁,读完即释放 三级三级事务全程加锁事务全程加锁事务全程加锁事务全程
17、加锁表表6-1 不同级别的封锁协议不同级别的封锁协议返回本节返回本节6.2.3 封锁出现的问题及解决方法封锁出现的问题及解决方法n1活锁活锁n在多个事务请求对同一数据封锁时,总是使在多个事务请求对同一数据封锁时,总是使某一事务等待的情况称为活锁。例如:如果某一事务等待的情况称为活锁。例如:如果事务事务T1封锁了数据封锁了数据R后,后,T2也请求封锁也请求封锁R,于于是是T2等待。接着等待。接着T3也请求封锁也请求封锁R。假如假如T1释释放放R上的锁后,系统首先批准了上的锁后,系统首先批准了T3的请求,的请求,T2只得继续等待。接着只得继续等待。接着T4也请求封锁也请求封锁R,T3释放释放R上的
18、锁后,系统又批准了上的锁后,系统又批准了T4的请求,的请求,T2有可能就这样永远等待下去。有可能就这样永远等待下去。n2死锁死锁n多个并发事务处于相互等待的状态,其中的多个并发事务处于相互等待的状态,其中的每一个事务都在等待它们中的另一个事务释每一个事务都在等待它们中的另一个事务释放封锁,这样才可以继续执行下去,但任何放封锁,这样才可以继续执行下去,但任何一个事务都没有释放自己已获得的锁,也无一个事务都没有释放自己已获得的锁,也无法获得其他事务已拥有的锁,所以只好相互法获得其他事务已拥有的锁,所以只好相互等待下去,这就产生了死锁。等待下去,这就产生了死锁。调度调度 时时刻刻事务事务T1事务事务
19、T2t1Xlock A t2 Xlock Bt3 Xlock B 等待等待 t4 Xlock A等待等待图图6-9死锁死锁目前在数据库中解决死锁问题主要有两类方目前在数据库中解决死锁问题主要有两类方法,一类方法是采取一定措施来预防死锁的法,一类方法是采取一定措施来预防死锁的发生,另一类方法是允许发生死锁,然后采发生,另一类方法是允许发生死锁,然后采用一定手段定期诊断系统中有无死锁,若有用一定手段定期诊断系统中有无死锁,若有则解除之。则解除之。n(1)死锁的预防。)死锁的预防。1)一次封锁法。)一次封锁法。2)顺序封锁法。)顺序封锁法。n(2)死锁的检测与解除。)死锁的检测与解除。返回本节返回本
20、节6.2.4 可串行化调度可串行化调度n所谓的两段锁协议是指所有事务必须分两个所谓的两段锁协议是指所有事务必须分两个阶段对数据项进行加锁和解锁。具体体现在阶段对数据项进行加锁和解锁。具体体现在:n(1)在对任何数据进行读、写操作之前,)在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁;事务首先要获得对该数据的封锁;n(2)释放一个封锁之后,事务不再申请并)释放一个封锁之后,事务不再申请并获得对任何数据的封锁。获得对任何数据的封锁。n所谓两段锁的含义是:事务分为两个阶段,所谓两段锁的含义是:事务分为两个阶段,第一阶段是获得封锁,也称为扩展阶段。在第一阶段是获得封锁,也称为扩展阶段。在
21、这个阶段,事务可以申请获得任何数据项上这个阶段,事务可以申请获得任何数据项上的任何类型的锁,但不能释放任何锁。第二的任何类型的锁,但不能释放任何锁。第二阶段是释放封锁,也称为收缩阶段。在这个阶段是释放封锁,也称为收缩阶段。在这个阶段,事务可以释放任何数据项上的任何类阶段,事务可以释放任何数据项上的任何类型的锁,但是不能申请任何锁。型的锁,但是不能申请任何锁。返回本节返回本节6.2.5 SQL Server的并发控制机制的并发控制机制n1SQL Server 的空间管理及锁的级别的空间管理及锁的级别n2SQL Server锁的类型锁的类型1SQL Server 的空间管理及锁的级别的空间管理及锁
22、的级别n(1)行和行级锁。)行和行级锁。n(2)页和页级锁。)页和页级锁。n(3)簇和簇级锁。)簇和簇级锁。n(4)表级锁。)表级锁。n(5)数据库级锁。)数据库级锁。2SQL Server锁的类型锁的类型n一般情况下,一般情况下,SQL Server 能自动提供加锁能自动提供加锁功能,而不需要用户专门设置,这些功能表功能,而不需要用户专门设置,这些功能表现在:现在:n(1)当使用)当使用SELECT语句访问数据库时,语句访问数据库时,系统能自动用共享锁访问数据;在使用系统能自动用共享锁访问数据;在使用INSERT、UPDATE和和DELETE语句增加、语句增加、修改和删除数据时,系统回自动给
23、使用数据修改和删除数据时,系统回自动给使用数据加排它锁。加排它锁。n(2)系统可用意向锁使锁之间的冲突最小)系统可用意向锁使锁之间的冲突最小化。意向锁建立一个锁机制的分层结构,其化。意向锁建立一个锁机制的分层结构,其结构按行级锁层和表级锁层设置。结构按行级锁层和表级锁层设置。n(3)当系统修改一个页时,会自动加修改)当系统修改一个页时,会自动加修改锁。修改锁和共享锁兼容,而当修改了某页锁。修改锁和共享锁兼容,而当修改了某页后,修改锁会上升为排它锁。后,修改锁会上升为排它锁。n(4)当操作涉及到参考表或者索引时,)当操作涉及到参考表或者索引时,SQL Server会自动提供模式稳定锁和模式修会自
24、动提供模式稳定锁和模式修改锁。改锁。返回本节返回本节6.3 数据库恢复数据库恢复n6.3.1数据库系统的故障数据库系统的故障n6.3.2 数据库备份技术数据库备份技术n6.3.3 数据库恢复策略数据库恢复策略n6.3.4SQL Server的数据备份和恢复的数据备份和恢复返回首页返回首页6.3.1数据库系统的故障数据库系统的故障n1事务故障事务故障n2系统故障系统故障 n3介质故障介质故障 返回本节返回本节6.3.2 数据库备份技术数据库备份技术n1数据转储数据转储n2日志文件日志文件1数据转储数据转储(1)静态转储和动态转储。)静态转储和动态转储。n1)静态转储是在系统中没有运行其他事务时进
25、行)静态转储是在系统中没有运行其他事务时进行的转储操作。的转储操作。n2)动态转储是指转储操作与用户事务并发进行,)动态转储是指转储操作与用户事务并发进行,转储期间允许对数据库进行存取或修改。转储期间允许对数据库进行存取或修改。(2)海量转储和增量转储。)海量转储和增量转储。n海量转储是指每次转储全部数据库。海量转储是指每次转储全部数据库。n增量转储是指转储上次转储后更新过的数据。增量转储是指转储上次转储后更新过的数据。2日志文件日志文件(1)日志文件的格式和内容。)日志文件的格式和内容。n各个事务的开始(各个事务的开始(BEGIN TRANSACTION)标记。标记。n事务标识(标明是哪个事
26、务)。事务标识(标明是哪个事务)。n操作的类型(插入、删除或修改)。操作的类型(插入、删除或修改)。n操作对象。操作对象。n更新前数据的旧值(对插入操作而言,此项为空值)。更新前数据的旧值(对插入操作而言,此项为空值)。n更新后数据的新值(对删除操作而言,此项为空值)。更新后数据的新值(对删除操作而言,此项为空值)。n各个事务的结束(各个事务的结束(COMMIT或或ROLLBACK)标记。标记。(2)登记日志文件。)登记日志文件。返回本节返回本节6.3.3 数据库恢复策略数据库恢复策略n1事务故障的恢复事务故障的恢复具体的恢复步骤为:具体的恢复步骤为:n(1)反向扫描文件日志(即从最后向前扫)
27、反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。描日志文件),查找该事务的更新操作。n(2)对该事务的更新操作执行逆操作。)对该事务的更新操作执行逆操作。n(3)重复执行()重复执行(1)和()和(2),恢复该事务),恢复该事务的其他更新操作,直至读到此事务的开始标的其他更新操作,直至读到此事务的开始标记,事务故障恢复就完成了。记,事务故障恢复就完成了。n2系统故障的恢复系统故障的恢复具体的恢复步骤为:具体的恢复步骤为:n(1)正向扫描日志文件(即从头扫描日志文件)正向扫描日志文件(即从头扫描日志文件),找出在故障发生前已经提交的事务(这些事务既,找出在故障发生前已经提交的
28、事务(这些事务既有有BERGIN TRANSACTION 记录,也记录,也有有COMMIT记录),将其事务标识记入重做(记录),将其事务标识记入重做(REDO)队列。队列。n(2)对撤消队列中的各个事务进行撤消()对撤消队列中的各个事务进行撤消(UNDO)处理。处理。n(3)对重做队列中的各个事务进行重做()对重做队列中的各个事务进行重做(REDO)处理。处理。n3介质故障的恢复介质故障的恢复介质故障是指磁盘上的物理数据和日志文件均遭破介质故障是指磁盘上的物理数据和日志文件均遭破坏,这是最严重的一种故障。恢复方法是首先重装坏,这是最严重的一种故障。恢复方法是首先重装数据库,使数据库管理系统能正
29、常运行,然后利用数据库,使数据库管理系统能正常运行,然后利用介质损坏前对数据库已做的备份恢复数据库。介质损坏前对数据库已做的备份恢复数据库。具体的恢复步骤为:具体的恢复步骤为:n(1)装入最新的后备数据库副本,使数据库恢复)装入最新的后备数据库副本,使数据库恢复到最近一次转储时的一致性状态。到最近一次转储时的一致性状态。n(2)装入相应的日志文件副本(转储结束时刻的)装入相应的日志文件副本(转储结束时刻的日志文件的副本),重做已完成的事务。日志文件的副本),重做已完成的事务。返回本节返回本节6.3.4SQL Server的数据备份和恢复的数据备份和恢复nSQL Server具有比较强大的数据备
30、份和恢具有比较强大的数据备份和恢复功能,提供了海量备份和增量备份、静态复功能,提供了海量备份和增量备份、静态备份和动态备份等多种备份方式,并具有日备份和动态备份等多种备份方式,并具有日志和检查点两种数据恢复技术。用户可以使志和检查点两种数据恢复技术。用户可以使用用Transact-SQL语句,也可以通过语句,也可以通过SQL Server 的的Enterprise Manager进行数据备份进行数据备份和数据恢复。和数据恢复。SQL Server 2000提供了四种数据库备份与恢提供了四种数据库备份与恢复数据的方式:复数据的方式:全库备份:备份整个数据库。全库备份:备份整个数据库。日志备份:备
31、份日志文件。日志备份:备份日志文件。差异备份:仅备份自上次全库备份后被修改差异备份:仅备份自上次全库备份后被修改过的数据页。过的数据页。文件或文件组备份:对组成数据库的文件或文件或文件组备份:对组成数据库的文件或文件组进行单独的备份。文件组进行单独的备份。例例6-1 对对BOOKSYS数据库做一次全库备份。数据库做一次全库备份。备份(备份(BACKUP)语句如下:语句如下:BACKUP DATABASE BOOKSYS /*对对BOOKSYS数据库进行备份数据库进行备份*/TO MYBAK /*备份设备为备份设备为MYBAK*/WITH INIT,/*此设备将覆盖以前所有此设备将覆盖以前所有的
32、备份的备份*/NAME=BOOKSYSBAK /*备份的名字为备份的名字为BOOKSYSBAK*/例例6-2 对对BOOKSYS数据库做一次差异备份。数据库做一次差异备份。备份(备份(BACKUP)语句如下:语句如下:BACKUP DATABASE BOOKSYS/*对对BOOKSYS数据数据库进行备份库进行备份*/TO MYBAK /*备份设备为备份设备为MYBAK*/WITH DIFFERENTIAL,/*差异备份差异备份*/NOINTI,/*新备份的数据库将添加到备份设备新备份的数据库将添加到备份设备原备份内容的后面原备份内容的后面*/NAME=BOOKSYSBAK /*备份的名字为备份
33、的名字为BOOKSYSBAK*/例例6-3 对对BOOKSYS数据库做一次日志备份。数据库做一次日志备份。备份备份(BACKUP)语句如下:语句如下:BACKUP LOG BOOKSYS/*对对BOOKSYS 进行日志备份进行日志备份*/TO MYBAK /*备份设备为备份设备为MYBAK*/WITH NOINIT,/*新备份的数据库将添加到备份设备新备份的数据库将添加到备份设备原备份内容的后面原备份内容的后面*/NAME=BOOKSYSBAK/*备份的名字为备份的名字为BOOKSYSBAK*/返回本节返回本节小结小结n本章介绍了事务的相关概念、并发控制机制本章介绍了事务的相关概念、并发控制机
34、制和数据库的备份和恢复技术三大内容。事务和数据库的备份和恢复技术三大内容。事务在数据库中是非常重要的概念,事务中的操在数据库中是非常重要的概念,事务中的操作是一个完整的工作单元,这些操作或者全作是一个完整的工作单元,这些操作或者全部成功,或者全部不成功。并发控制是指当部成功,或者全部不成功。并发控制是指当同时执行多个事务时,为了保证一个事务的同时执行多个事务时,为了保证一个事务的执行不受其他事务的干扰所采取的措施。执行不受其他事务的干扰所采取的措施。n并发控制的主要方法是加锁,根据对数据操并发控制的主要方法是加锁,根据对数据操作的不同,锁分为共享锁和排它锁两种。为作的不同,锁分为共享锁和排它锁两种。为了保证并发执行的事务是正确的,一般要求了保证并发执行的事务是正确的,一般要求事务遵守两段锁协议,即在一个事务中明显事务遵守两段锁协议,即在一个事务中明显地分为锁申请期和释放期,它是保证事务是地分为锁申请期和释放期,它是保证事务是可并发执行的充分条件。可并发执行的充分条件。