文档详情

数据库技术及应用第7章事务管理

小萌新****ao
实名认证
店铺
PPT
617.50KB
约63页
文档ID:366267998
数据库技术及应用第7章事务管理_第1页
1/63

7.1.1 事务的定义事务的定义所谓所谓事务事务是用户定义的一个是用户定义的一个数据库操作序列数据库操作序列,这些操作,这些操作要么要么全做全做,要么全不做要么全不做,是一个不可分割的工作单位是一个不可分割的工作单位事务事务也是也是并发控制并发控制和和数据库恢复数据库恢复的基本单位的基本单位事务和程序是两个不同的概念事务和程序是两个不同的概念,一个应用程序通常包含多个,一个应用程序通常包含多个事务事务的开始与结束事务的开始与结束可以由用户显式控制可以由用户显式控制,如果用户没有显式,如果用户没有显式地定义事务,则由数据库管理系统地定义事务,则由数据库管理系统按默认规定自动划分事务按默认规定自动划分事务BEGIN TRANSACTION 事务开始事务开始 从账户从账户A中中-100 向账户向账户B中中+100 IF error=0 COMMIT 事务结束事务结束 ELSE ROLLBACK 事务结束事务结束 7.1.2 事务的事务的ACID性质性质(1)原子性原子性原子性表示事务中包含的数据库操作要么都做,要么都不做原子性表示事务中包含的数据库操作要么都做,要么都不做一个事务对数据库的所有操作是一个不可分割的操作序列,一个事务对数据库的所有操作是一个不可分割的操作序列,这一性质这一性质即使在系统发生各种故障之后仍能得到保证即使在系统发生各种故障之后仍能得到保证。

2)一致性一致性事务执行的结果必须是使数据库事务执行的结果必须是使数据库从一个一致性状态从一个一致性状态变到变到另一另一个一致性状态个一致性状态确保单个事务的一致性是编写该事务的应用确保单个事务的一致性是编写该事务的应用程序员的职责一致性表示无论事务是否成功完成,都能保程序员的职责一致性表示无论事务是否成功完成,都能保证数据库中的数据始终处于一致状态(即正确状态)证数据库中的数据始终处于一致状态(即正确状态)3)隔离性隔离性隔离性表示一个事务内部的操作及使用的数据对其他并发事隔离性表示一个事务内部的操作及使用的数据对其他并发事务是隔离的,务是隔离的,并发执行的各个事务之间不能互相干扰并发执行的各个事务之间不能互相干扰,即每,即每个事务都感觉不到系统中有其他事务在并发地执行个事务都感觉不到系统中有其他事务在并发地执行7.1.2 事务的事务的ACID性质性质(4)持续性持续性持续性也称持续性也称持久性持久性或或永久性永久性,指一个事务一旦提交,它对数,指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的据库中数据的改变就应该是永久性的接下来的其他操作接下来的其他操作或或故障不应该对其执行结果有任何影响故障不应该对其执行结果有任何影响,即使在写入磁盘之前,即使在写入磁盘之前,系统发生故障。

系统发生故障保证事务的保证事务的ACID特性是事务管理的重要任务事务特性是事务管理的重要任务事务ACID特特性可能遭到破坏的因素有性可能遭到破坏的因素有:(1)多个事务并行运行时,不同事务的操作交叉执行;多个事务并行运行时,不同事务的操作交叉执行;(2)事务在运行过程中被强行停止事务在运行过程中被强行停止DBMS的并发控制机制必须保证多个事务的交叉运行不影响的并发控制机制必须保证多个事务的交叉运行不影响这些事务的隔离性;这些事务的隔离性;DBMS的恢复机制必须保证被强行终止的事务的原子性和持的恢复机制必须保证被强行终止的事务的原子性和持久性7.1.3 事务的状态事务的状态如果一个事务不能成功地执行完成,就称该事务如果一个事务不能成功地执行完成,就称该事务被中止被中止(Aborted)了,中止事务对数据库所做过的任何改变必须)了,中止事务对数据库所做过的任何改变必须撤销成功完成执行的事务称为撤销成功完成执行的事务称为已提交已提交(Committed),已),已提交事务使数据库进入一个新的一致性状态,即使系统出现提交事务使数据库进入一个新的一致性状态,即使系统出现故障,这个状态也必须保持当故障,这个状态也必须保持。

当事务执行完最后一条语句后事务执行完最后一条语句后就进入了就进入了部分提交状态部分提交状态活动活动状态状态部部 分分提提交交 状状态态提交提交状态状态失败失败状态状态中止中止状态状态只有在事务只有在事务已进入提交状已进入提交状态态后,才能说事务后,才能说事务已提交已提交同样地,只有在事务已同样地,只有在事务已进进入中止状态入中止状态后,才能说事后,才能说事务务已中止已中止如果事务是已如果事务是已提交或者已中止都称事务提交或者已中止都称事务是已经结束是已经结束7.1.4 SQL Server 2014中的事务中的事务(1)显式事务显式事务用语句用语句BEGIN TRAN来来显式启动显式启动事务,成功时用事务,成功时用COMMIT或或者错误时用者错误时用ROLLBACK来来显式结束显式结束事务显式事务模式持事务显式事务模式持续的时间只限于该事务的持续期当续的时间只限于该事务的持续期当事务结束时,连接将返事务结束时,连接将返回到启动显式事务前所处的事务模式回到启动显式事务前所处的事务模式,或者是隐式模式,或,或者是隐式模式,或者是自动提交模式者是自动提交模式2)自动提交事务自动提交事务该模式是该模式是SQL Server的的默认事务管理模式默认事务管理模式。

每个每个T-SQL语句语句在完成时,都被提交或回滚在完成时,都被提交或回滚3)隐式事务隐式事务在在T-SQL中有语句中有语句SET IMPLICIT_TRANSACTIONS ON|OFF 来管理事务模式,该设置的来管理事务模式,该设置的默认值为默认值为OFF当设置为当设置为ON时时,连接被设置为,连接被设置为隐式事务模式隐式事务模式;当设置为;当设置为OFF时时,连接,连接将返回到将返回到自动提交事务模式自动提交事务模式7.1.4 SQL Server 2014中的事务中的事务当连接当连接处于隐式事务模式且当前不在事务中处于隐式事务模式且当前不在事务中时,时,执行下列语执行下列语句中的语句将自动启动一个事务句中的语句将自动启动一个事务,当该事务结束(提交或回,当该事务结束(提交或回滚)后,再执行这些语句中的语句又将自动启动一个新事务滚)后,再执行这些语句中的语句又将自动启动一个新事务ALTER TABLEFETCHREVOKE CREATE GRANTSELECT DELETEINSERTTRUNCATE TABLE DROPOPENUPDATE在隐式事务模式下,用户在隐式事务模式下,用户无须描述事务的开始无须描述事务的开始,只需提交或只需提交或回滚回滚每个事务。

每个事务注意:对于因为隐式事务模式设置为注意:对于因为隐式事务模式设置为ON而自动启动的事务,而自动启动的事务,用户用户必须必须在该事务结束时将其在该事务结束时将其显式提交或回滚显式提交或回滚,否则否则当用户当用户断开连接断开连接时,事务及其所包含的所有数据更改将回滚时,事务及其所包含的所有数据更改将回滚7.2 并发控制并发控制至少有以下至少有以下两个理由要求多个事务并发执行两个理由要求多个事务并发执行1)提高了系统的吞吐量(即给定时间内执行的事务数)和资源提高了系统的吞吐量(即给定时间内执行的事务数)和资源(处理器和磁盘)的利用率(处理器和磁盘)的利用率2)提高响应速度和减少等待时间提高响应速度和减少等待时间在在单处理器系统单处理器系统中,事务的并行执行方式称为中,事务的并行执行方式称为交叉并发交叉并发方式在在多处理器系统多处理器系统中,实现多个事务真正地并行运行,这种并中,实现多个事务真正地并行运行,这种并行执行方式称为行执行方式称为同时并发同时并发方式本节讨论本节讨论的数据库系统并发控制技术的数据库系统并发控制技术是单处理器系统是单处理器系统中的7.2.1 并发操作与数据的不一致性并发操作与数据的不一致性 典型的典型的数据不一致性有:数据不一致性有:丢失修改丢失修改 读读“脏脏”数数 不可重复读不可重复读 T1 T2 T1 T2 T1 T2读读A=20读读A=50读读A=30 A=A-30读读B=50 读读A=20写回写回A=20求和求和=80 读读A=20 读读B=50A=A-1 B=B-30 写回写回A=19 写回写回B=20ROLLBACK读读A=30 A=A-1A恢复为恢复为50读读B=20 写回写回A=19求和求和=50(验算不对验算不对)7.2.1 并发操作与数据的不一致性并发操作与数据的不一致性 不可重复读包括三种情况不可重复读包括三种情况:(1)如图如图7.2(c)所示。

所示2)事务事务T1按一定条件从数据库中读取了某些数据记录后,事按一定条件从数据库中读取了某些数据记录后,事务务T2删除了其中部分记录删除了其中部分记录,当,当T1再次按相同条件读取数据时,再次按相同条件读取数据时,发现发现某些记录消失了某些记录消失了3)事务事务T1按一定条件从数据库中读取某些数据记录后,事务按一定条件从数据库中读取某些数据记录后,事务T2插入了一些记录插入了一些记录,当,当T1再次按相同条件读取数据时,发现再次按相同条件读取数据时,发现多了一些记录多了一些记录后两种后两种不可重复读有时也称为不可重复读有时也称为幻影现象幻影现象产生上述三种数据不一致性的主要原因产生上述三种数据不一致性的主要原因是由于并发操作破坏是由于并发操作破坏了事务的隔离性了事务的隔离性并发控制就是要并发控制就是要用正确的方式调度并发操用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,从而避免作,使一个用户事务的执行不受其他事务的干扰,从而避免造成数据的不一致性造成数据的不一致性7.2.2 可串行性可串行性事务的执行次序称为事务的执行次序称为“调度调度”如果多个事务如果多个事务依次执行依次执行,则,则称为事务的称为事务的串行调度串行调度,n个事务有个事务有n!种不同的串行调度种不同的串行调度。

虽虽然以不同的顺序串行执行事务可能会然以不同的顺序串行执行事务可能会产生不同的结果产生不同的结果,但,但串串行调度的执行结果都是正确的行调度的执行结果都是正确的如果如果同时执行同时执行多个事务,则称为事务的多个事务,则称为事务的并发调度并发调度,n个事务个事务并发执行,可能的并发调度并发执行,可能的并发调度数目远远大于数目远远大于n!那么什么样那么什么样的调度是正确的呢?的调度是正确的呢?多个事务的并发执行是正确的多个事务的并发执行是正确的,当且仅当当且仅当其结果与按某一顺其结果与按某一顺序串行地执行这些事务时的结果相同,称这种并发调度为序串行地执行这些事务时的结果相同,称这种并发调度为可可串行化(串行化(Serializable)调度)调度可串行性(可串行性(Serializability)是并发事务正确调度的准则按)是并发事务正确调度的准则按照这个准则,照这个准则,一个给定的并发调度,当且仅当它是可串行化一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度的,才认为是正确调度7.2.2 可串行性可串行性 串行调度串行调度 T1 T2 T1 T2读读A=1000读读A=1000A=A-50T=A*0.1=100写回写回A=950A=A-T读读B=2000写回写回A=900B=B+50读读B=2000写回写回B=2050B=B+TCOMMIT写回写回B=2100读读A=950COMMITT=A*0.1=95读读A=900A=A-TA=A-50写回写回A=855写回写回A=850读读B=2050读读B=2100B=B+TB=B+50写回写回B=2145写回写回B=2150COMMITCOMMIT先先T1后后T2次次序执行结果序执行结果为为A=855,B=2145 先先T2后后T1次次序执行结果序执行结果为为A=850,B=2150 7.2.2 可串行性可串行性 并发调度并发。

下载提示
相似文档
正为您匹配相似的精品文档