第10章事务处理、并发控制与故障恢复技术课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第10章事务处理、并发控制与故障恢复技术课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第10章 事务处理、并发控制与故障恢复技术课件 10 事务处理 并发 控制 故障 恢复 技术 课件
- 资源描述:
-
1、第10章 事务处理、并发控制与故障恢复技术10.1 事务处理110.1 10.1 事务处理事务处理10.1.1 10.1.1 事务事务10.1.2 10.1.2 事务的性质事务的性质10.1.3 10.1.3 事务的状态事务的状态10.1.4 10.1.4 与事务有关的控制语句与事务有关的控制语句10.1.5 10.1.5 事务的组成事务的组成10.1.1 10.1.1 事务事务q事务事务(transactiontransaction)由某个用户所执行的一个不能被打断的对数据库的操作由某个用户所执行的一个不能被打断的对数据库的操作序列被称为序列被称为事务事务。事务事务是应用程序访问数据库的基本
2、逻辑工作单位。是应用程序访问数据库的基本逻辑工作单位。事务事务通常由一组对于数据库的访问操作组成,在通常由一组对于数据库的访问操作组成,在执行过程中按照预定的次序顺序执行。执行过程中按照预定的次序顺序执行。一个一个事务事务的执行过程是串行的,它将数据库从一的执行过程是串行的,它将数据库从一个旧的一致性状态转换到一个新的一致性状态。在个旧的一致性状态转换到一个新的一致性状态。在事务事务的执行过程中,数据库中的数据可能有不一的执行过程中,数据库中的数据可能有不一致的现象,但在致的现象,但在事务事务执行结束时,系统将保证数执行结束时,系统将保证数据库中数据的一致性。据库中数据的一致性。10.1.1
3、10.1.1 事务事务q例例银行的转帐业务:根据银行的转帐业务:根据输入的两个银行存款帐号输入的两个银行存款帐号A A和和B B,以及转帐金额以及转帐金额X X,将帐号将帐号A A的金额减去的金额减去X X,帐号帐号B B的金额增加的金额增加X X。其处理过程如下其处理过程如下(其中其中READ(A)READ(A)表示将帐号表示将帐号A A的金额读入内存的金额读入内存变量变量A A,WRITE(A)WRITE(A)表示将内存变量表示将内存变量A A的值作为帐号的值作为帐号A A的金额写的金额写入数据库):入数据库):READ(A);READ(A);IF(A IF(A X)X)THEN BEGI
4、NTHEN BEGINA:=A X;A:=A X;WRITE(A);WRITE(A);READ(B);READ(B);B:=B+X;B:=B+X;WRITE(B);WRITE(B);ENDEND 该事务的该事务的DBDB访问操作为:访问操作为:READ(A);READ(A);WRITE(A);WRITE(A);READ(B);READ(B);WRITE(B);WRITE(B);对该事务而言,数据库中数对该事务而言,数据库中数据的一致性就是指:据的一致性就是指:帐号帐号A A和和帐号帐号B B的总金额之和不变的总金额之和不变10.1.2 10.1.2 事务的性质事务的性质事务具有四个特性,简称为
5、事务的事务具有四个特性,简称为事务的 ACID 特性,也被特性,也被称为事务的执行过程必须满足的四条准则。称为事务的执行过程必须满足的四条准则。1.1.原子性原子性(A Atomicitytomicity)在一个事务中,所有的数据库访问操作是一个不可分割在一个事务中,所有的数据库访问操作是一个不可分割的操作序列,这些操作要么全部执行结束,要么一个都的操作序列,这些操作要么全部执行结束,要么一个都不要执行。不要执行。(例:例:银行转帐银行转帐)数据库管理系统会自动维护用户事务执行的原子性。数据库管理系统会自动维护用户事务执行的原子性。事务管理子系统事务管理子系统事务日志事务日志10.1.2 10
6、.1.2 事务的性质事务的性质2 2一致性一致性(C Consistencyonsistency)一个事务的成功执行总是将数据库从一个一致的状态转一个事务的成功执行总是将数据库从一个一致的状态转换到另一个一致的状态。换到另一个一致的状态。数据库的数据库的状态状态v指数据库中所有数据对象的当前取值情况。指数据库中所有数据对象的当前取值情况。v数据库的一致的状态可以理解为数据库中所有数数据库的一致的状态可以理解为数据库中所有数据的正确性,它要求数据库中的数据必须满足:据的正确性,它要求数据库中的数据必须满足:o在数据库中显式定义的各种完整性约束在数据库中显式定义的各种完整性约束o用户心目中的隐式数
7、据约束用户心目中的隐式数据约束10.1.2 10.1.2 事务的性质事务的性质2 2一致性一致性(续)(续)事务执行的事务执行的一致性一致性原则基于这样一个假设:原则基于这样一个假设:在一个事务开始执行之前数据库处于一个一致的状态,在一个事务开始执行之前数据库处于一个一致的状态,如果没有如果没有,那么当该,那么当该事务执行结束时数据库仍然处于一致的状态。事务执行结束时数据库仍然处于一致的状态。事务的事务的一致性一致性特性由两方面完成特性由两方面完成DBMSDBMS中的中的数据完整性保护数据完整性保护子系统子系统编写事务的应用程序员编写事务的应用程序员10.1.2 10.1.2 事务的性质事务的
8、性质3 3隔离性隔离性(I Isolationsolation)一个事务的执行与并发执行的其它事务之间是相互独立一个事务的执行与并发执行的其它事务之间是相互独立的,互不干扰,这被称为事务执行的的,互不干扰,这被称为事务执行的隔离性隔离性。事务执行的事务执行的隔离性隔离性要求:多个事务并发执行的最要求:多个事务并发执行的最终结果,应该与它们的某种串行执行的最终结果相等,终结果,应该与它们的某种串行执行的最终结果相等,这被称为并发事务的可串行化。这被称为并发事务的可串行化。事务执行的事务执行的隔离性隔离性是由是由DBMS的并发控制子系统的并发控制子系统来实现的。来实现的。v在数据库系统中,当多个事
9、务并发执行时,每个在数据库系统中,当多个事务并发执行时,每个事务都可以看成只有自己在执行,只有当它与其事务都可以看成只有自己在执行,只有当它与其它事务发生封锁冲突时,才会感觉到其它事务的它事务发生封锁冲突时,才会感觉到其它事务的存在。存在。v例如:飞机售票系统例如:飞机售票系统10.1.2 10.1.2 事务的性质事务的性质4 4持久性持久性(D Durabilityurability)一个事务一旦完成其全部操作后,它对数据库的所有更一个事务一旦完成其全部操作后,它对数据库的所有更新应永久地反映在数据库中,即使以后系统发生故障也新应永久地反映在数据库中,即使以后系统发生故障也应保留这个事务的执
10、行结果。应保留这个事务的执行结果。事务的事务的持久性持久性是由是由DBMSDBMS的恢复管理子系统实现的。的恢复管理子系统实现的。q 数据库管理系统通过其数据库管理系统通过其事务管理事务管理子系统(含子系统(含并并发控制发控制子系统)、子系统)、恢复管理恢复管理子系统、子系统、数据完数据完整性保护整性保护子系统来实现事务的原子性子系统来实现事务的原子性(A)A)、一致性一致性(C)C)、隔离性隔离性(I)I)和持久性和持久性(D)D)。q例例银行的转帐业务:从银行的转帐业务:从银行存款帐号银行存款帐号A A(当前金额当前金额1000010000元)转元)转50005000元到银行存款帐号元到银
11、行存款帐号B B(当前金额当前金额2000020000元)元)转帐事务转帐事务内存变量内存变量X X 帐号帐号A A帐号帐号B B-100001000020000200001 1READ(A)to X;READ(A)to X;100001000010000100002000020000IF(X IF(X 5000)5000)THEN BEGINTHEN BEGIN100001000010000100002000020000X:=X 5000;X:=X 5000;50005000100001000020000200002 2WRITE(X)to A;WRITE(X)to A;5000500050
12、00500020000200003 3READ(B)to X;READ(B)to X;2000020000500050002000020000X:=X+5000;X:=X+5000;25000250005000500020000200004 4WRITE(X)to B;WRITE(X)to B;2500025000500050002500025000ENDEND-50005000250002500010.1.3 10.1.3 事务的状态事务的状态q为了精确地描述一个事务的工作过程,我们建立了一个抽为了精确地描述一个事务的工作过程,我们建立了一个抽象的事务模型,以表示事务的状态变迁情况。象的事务
13、模型,以表示事务的状态变迁情况。活活 动动 预预 提提 交交 异异常常中中止止 提提 交交 失失 败败 Begin Read/Write Abort Abort Commit Rollback 事事务务执执行行结结束束 重重新新启启动动该该事事务务 事事务务的的状状态态变变迁迁图图 End 10.1.3 10.1.3 事务的状态事务的状态q活动活动 状态状态事务在开始执行后,立即进入事务在开始执行后,立即进入活动活动状态。在状态。在活动活动状态中,事务将执行对数据库的访问操作。状态中,事务将执行对数据库的访问操作。在在DBMS的事务管理子系统看来,用户事务对数据库的事务管理子系统看来,用户事务
14、对数据库的访问操作就是对数据库中数据的读的访问操作就是对数据库中数据的读/写操作。写操作。v读读操作:将数据读入用户事务的私有工作区操作:将数据读入用户事务的私有工作区间。间。o如果该数据当前不在如果该数据当前不在DBMS的系统缓冲区中,的系统缓冲区中,那么那么DBMS首先将该数据从磁盘读入系统缓冲首先将该数据从磁盘读入系统缓冲区,然后再将其拷贝到用户事务的私有工作区。区,然后再将其拷贝到用户事务的私有工作区。v写写操作:将修改后的数据操作:将修改后的数据写入写入数据库。数据库。o这里的这里的写写操作并不是立即将数据永久性地操作并不是立即将数据永久性地写入磁盘,很可能暂时存放在写入磁盘,很可能
15、暂时存放在DBMS的系统缓的系统缓冲区中。冲区中。10.1.3 10.1.3 事务的状态事务的状态q预预提交提交 状态状态当事务的最后一条访问语句执行结束之后,事务进入当事务的最后一条访问语句执行结束之后,事务进入预提交预提交状态。此时事务对于数据库的访问操作虽然状态。此时事务对于数据库的访问操作虽然已经执行结束,但其对于数据的修改结果可能还在内存已经执行结束,但其对于数据的修改结果可能还在内存的系统缓冲区中,必须将其真正写入数据库的磁盘。的系统缓冲区中,必须将其真正写入数据库的磁盘。事务在事务在预提交预提交阶段,必须确保将当前事务的所有阶段,必须确保将当前事务的所有修改操作的执行结果真正写入
16、到数据库的磁盘中去。修改操作的执行结果真正写入到数据库的磁盘中去。v在所有在所有写写磁盘操作执行结束后,事务就进入磁盘操作执行结束后,事务就进入提交提交状态。状态。在在预提交预提交阶段,虽然事务本身的操作命令已经执阶段,虽然事务本身的操作命令已经执行结束,但是在写磁盘的过程中仍然会发生系统故障,行结束,但是在写磁盘的过程中仍然会发生系统故障,从而导致当前事务的执行失败。从而导致当前事务的执行失败。v在在预提交预提交失败后,当前事务也将被放弃失败后,当前事务也将被放弃(abort),事务转而进入事务转而进入失败失败状态。状态。10.1.3 10.1.3 事务的状态事务的状态q失败失败 状态状态处
17、于处于活动活动状态的事务在顺利到达并执行完最后一条状态的事务在顺利到达并执行完最后一条语句之前就中止执行,或者在语句之前就中止执行,或者在预提交预提交状态下因发生状态下因发生系统故障而中止执行时,我们称事务进入系统故障而中止执行时,我们称事务进入失败失败状态。状态。事务从事务从活动活动状态转变为状态转变为失败失败状态的原因状态的原因v应用程序应用程序(或用户或用户)主动放弃主动放弃(abort)当前事务当前事务v因并发控制的原因而被放弃的事务因并发控制的原因而被放弃的事务o封锁申请的超时等待封锁申请的超时等待o死锁死锁v发生系统故障发生系统故障事务从事务从预提交预提交状态转变为状态转变为失败失
18、败状态的原因状态的原因v发生系统故障发生系统故障10.1.3 10.1.3 事务的状态事务的状态q异常中止异常中止 状态状态处于处于失败失败状态的事务,很可能已对磁盘中的数据进状态的事务,很可能已对磁盘中的数据进行了一部分修改。为了保证事务的原子性,系统应该撤行了一部分修改。为了保证事务的原子性,系统应该撤消消(undo操作操作)该事务对数据库已作的修改。在撤消操作该事务对数据库已作的修改。在撤消操作完成以后,事务将被打上一个放弃的标志完成以后,事务将被打上一个放弃的标志(aborted),转转而进入而进入异常中止异常中止状态。状态。回退回退(rollback)v对事务的撤消操作也称为事务的对
19、事务的撤消操作也称为事务的回退回退或或回回滚滚。v事务的事务的回退回退由由DBMS的的恢复子系统恢复子系统实现。实现。在事务进入在事务进入异常中止异常中止状态后,系统有两种选择:状态后,系统有两种选择:v作为一个新的事务,重新启动作为一个新的事务,重新启动v取消事务取消事务10.1.3 10.1.3 事务的状态事务的状态q提交提交 状态状态事务进入事务进入预提交预提交状态后,状态后,并发控制子系统并发控制子系统将检将检查该事务与并发执行的其它事务之间是否发生干扰现象。查该事务与并发执行的其它事务之间是否发生干扰现象。在检查通过以后,系统执行提交在检查通过以后,系统执行提交(commit)操作,
20、把对数操作,把对数据库的修改全部写到磁盘上,并通知系统,事务已成功据库的修改全部写到磁盘上,并通知系统,事务已成功地结束,为事务打上一个提交标志地结束,为事务打上一个提交标志(committed),事务事务就进入就进入提交提交状态。状态。不论是不论是提交提交状态,还是状态,还是异常中止异常中止状态,都意味着状态,都意味着一个事务的执行结束。一个事务的执行结束。10.1.4 10.1.4 与事务有关的控制语句与事务有关的控制语句q事务事务除了由一组对于数据库的访问操作构成以外,通常除了由一组对于数据库的访问操作构成以外,通常还应该包括少量的事务控制语句,用于定义一个事务的开始还应该包括少量的事务
21、控制语句,用于定义一个事务的开始和结束和结束(包括正常结束和非正常结束包括正常结束和非正常结束)。因此,与事务有关的。因此,与事务有关的控制语句主要有三条:控制语句主要有三条:事务的开始事务的开始(begin transaction)用于开始一个事务。用于开始一个事务。事务的结束事务的结束用于终止一个事务,包括事务的正常结束和非正常结用于终止一个事务,包括事务的正常结束和非正常结束。束。v正常结束正常结束o提交事务提交事务(commit transaction)v非正常结束非正常结束o回退事务回退事务(rollback transaction)10.1.4 10.1.4 与事务有关的控制语句与
22、事务有关的控制语句qBegin transaction现有的关系数据库管理系统并没有提供一个用于定义从现有的关系数据库管理系统并没有提供一个用于定义从什么时候开始一个事务的控制语句,事务的启动是隐式什么时候开始一个事务的控制语句,事务的启动是隐式的。可以通过三种方式来启动一个新的事务:的。可以通过三种方式来启动一个新的事务:数据定义命令数据定义命令(DDL)v每一条数据定义命令都将被作为一个单独的事务每一条数据定义命令都将被作为一个单独的事务来执行。在此之前的用户事务将被提动提交。来执行。在此之前的用户事务将被提动提交。将系统设为自动提交方式(打开自动提交标志)将系统设为自动提交方式(打开自动
23、提交标志)v每一条数据库访问命令都将被作为一个单独的事每一条数据库访问命令都将被作为一个单独的事务来执行,并根据执行结果自动提交或回退。务来执行,并根据执行结果自动提交或回退。数据操纵命令数据操纵命令(DML)v在当前用户的前一个事务执行结束之后提交的第在当前用户的前一个事务执行结束之后提交的第一条数据库访问操作之前,数据库管理系统将自一条数据库访问操作之前,数据库管理系统将自动启动一个新的事务。动启动一个新的事务。10.1.4 10.1.4 与事务有关的控制语句与事务有关的控制语句qCommit transaction提交当前事务,事务在执行过程中对于数据库的所有修提交当前事务,事务在执行过
24、程中对于数据库的所有修改操作都将永久地反应到数据库中,并且不可被取消。改操作都将永久地反应到数据库中,并且不可被取消。事务的提交操作也可能失败,其原因包括:事务的提交操作也可能失败,其原因包括:v发生系统故障发生系统故障v在提交阶段执行的数据完整性检查在提交阶段执行的数据完整性检查在事务提交失败后,用户可以通过回退在事务提交失败后,用户可以通过回退(Rollback)操操作来取消当前事务。作来取消当前事务。v由系统自动提交的事务,如果提交失败,系统将由系统自动提交的事务,如果提交失败,系统将自动执行事务的回退操作。自动执行事务的回退操作。10.1.4 10.1.4 与事务有关的控制语句与事务有
25、关的控制语句qRollback transaction取消在该事务执行过程中的所有操作,回滚该事务至事取消在该事务执行过程中的所有操作,回滚该事务至事务的起点,以便重新执行或放弃(务的起点,以便重新执行或放弃(abort)该事务。该事务。检查点检查点(savepoint)v在事务的执行过程中,系统可以为该事务设置若在事务的执行过程中,系统可以为该事务设置若干个检查点。干个检查点。v用户事务可以使用用户事务可以使用 Rollback 命令将当前事务回命令将当前事务回退到前面的某个检查点退到前面的某个检查点sp,放弃在检查点放弃在检查点sp之后,之后,回退操作之前执行的对数据库的所有访问操作,回退
展开阅读全文