书签 分享 收藏 举报 版权申诉 / 177
上传文档赚钱

类型第10章事务处理、并发控制与故障恢复技术课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:5207446
  • 上传时间:2023-02-17
  • 格式:PPT
  • 页数:177
  • 大小:694.19KB
  • 【下载声明】
    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之后,之后,回退操作之前执行的对数据库的所有访问操作,回退

    26、操作之前执行的对数据库的所有访问操作,并继续执行当前事务。并继续执行当前事务。v不带参数不带参数(检查点检查点)的回退操作将结束并放弃整个的回退操作将结束并放弃整个事务。事务。10.1.4 10.1.4 与事务有关的控制语句与事务有关的控制语句q除了上述三条事务控制语句外,数据库管理系统通常还会除了上述三条事务控制语句外,数据库管理系统通常还会提供下述几种与事务有关的控制命令提供下述几种与事务有关的控制命令(DCL)。设置事务的自动提交命令设置事务的自动提交命令SET AUTO COMMIT ON|OFF设置事务的类型设置事务的类型SET TRANSACTION READONLY|READWR

    27、ITE设置事务的隔离级别设置事务的隔离级别SET TRANSACTION ISOLATION LEVELREADUNCOMMITTED|READCOMMITTED|READREPEATABLE|SERIALIZABLEq上述三条命令并不是事务的组成部分,只是用于定义新事上述三条命令并不是事务的组成部分,只是用于定义新事务的执行方式。务的执行方式。10.1.4 10.1.4 与事务有关的控制语句与事务有关的控制语句qSET TRANSACTION READONLY|READWRITE定义在这之后启动的所有事务在执行过程中对数据库的定义在这之后启动的所有事务在执行过程中对数据库的访问方式。访问方式

    28、。READONLY:只读型事务只读型事务v在事务的运行过程中只能执行对数据库的在事务的运行过程中只能执行对数据库的读读操作,而不能执行操作,而不能执行更新更新类型的操作。类型的操作。v直到定义新的事务类型直到定义新的事务类型READWRITE:读读/写型事务写型事务v在事务的运行过程中可以执行对数据库的在事务的运行过程中可以执行对数据库的读读/写写操作。操作。v这是事务的缺省类型定义。这是事务的缺省类型定义。10.1.4 10.1.4 与事务有关的控制语句与事务有关的控制语句qSET TRANSACTION ISOLATION LEVEL 定义当前用户的事务与其它并发执行事务之间的隔离级定义当

    29、前用户的事务与其它并发执行事务之间的隔离级别。事务的隔离级别与所采用的封锁策略紧密相关。别。事务的隔离级别与所采用的封锁策略紧密相关。READUNCOMMITTED:未提交读未提交读v在该方式下,当前事务不需要申请任何类型的封在该方式下,当前事务不需要申请任何类型的封锁,因而可能会锁,因而可能会读读到未提交的修改结果到未提交的修改结果v禁止一个事务以该方式去执行对数据的禁止一个事务以该方式去执行对数据的写写操操作,以避免作,以避免写写冲突现象。冲突现象。READCOMMITTED:提交读提交读v在在读读数据对象数据对象X之前需要先申请对数据对象之前需要先申请对数据对象X的的共享性共享性封锁,在

    30、封锁,在读读操作执行结束之后操作执行结束之后立即释放该封锁。立即释放该封锁。v以避免读取未提交的修改结果。以避免读取未提交的修改结果。10.1.4 10.1.4 与事务有关的控制语句与事务有关的控制语句READREPEATABLE:可重复读可重复读v在在读读数据对象数据对象X之前需要先申请对数据对象之前需要先申请对数据对象X的的共享性共享性封锁,并将该封锁维持到当前事务封锁,并将该封锁维持到当前事务的结束。的结束。v可以避免其它的并发事务对当前事务正在使用的可以避免其它的并发事务对当前事务正在使用的数据对象的修改。数据对象的修改。SERIALIZABLE:可序列化可序列化(可串行化可串行化)v

    31、并发事务以一种可串行化的调度策略实现其并发并发事务以一种可串行化的调度策略实现其并发执行,以避免它们相互之间的干扰现象。执行,以避免它们相互之间的干扰现象。q不管采用何种隔离级别,在事务不管采用何种隔离级别,在事务写写数据对象数据对象X之前需要之前需要先申请对数据对象先申请对数据对象X的的排它性排它性封锁,并将该封锁维持到封锁,并将该封锁维持到当前事务的结束。当前事务的结束。10.1.5 10.1.5 事务的组成事务的组成q数据对象数据对象数据对象的大小数据对象的大小可以是一个属性值、一个元组、一张表(元组的集合)可以是一个属性值、一个元组、一张表(元组的集合)或整个数据库,也可以是一个磁盘块

    32、。或整个数据库,也可以是一个磁盘块。在这里我们并不严格区分它们,而是简单称其为在这里我们并不严格区分它们,而是简单称其为数数据对象据对象A,或简称或简称数据数据A数据对象的地址空间数据对象的地址空间在用户事务与数据库进行数据交换时,存在三种与数在用户事务与数据库进行数据交换时,存在三种与数据有关的地址空间概念:据有关的地址空间概念:v保存这些数据对象的磁盘空间保存这些数据对象的磁盘空间v数据库管理系统所使用的内存缓冲区数据库管理系统所使用的内存缓冲区v事务的局部地址空间事务的局部地址空间(内存变量内存变量)同一个数据对象在不同的地方可能具有不同的值。同一个数据对象在不同的地方可能具有不同的值。

    33、10.1.5 10.1.5 事务的组成事务的组成q操作操作事务的开始:事务的开始:START T0将数据对象将数据对象A的值从磁盘中读入内存缓冲区的值从磁盘中读入内存缓冲区INPUT(A)将内存缓冲区中数据对象将内存缓冲区中数据对象A的值写入磁盘的值写入磁盘OUTPUT(A)将内存缓冲区中数据对象将内存缓冲区中数据对象A的值读入内存变量的值读入内存变量tREAD(A,t)v隐含着一个隐含着一个 INPUT(A)操作操作将内存变量将内存变量t的值写入内存缓冲区中数据对象的值写入内存缓冲区中数据对象AWRITE(A,t)提交事务:提交事务:COMMIT T0回退回退(放弃放弃)事物:事物:ABOR

    34、T T010.1.5 10.1.5 事务的组成事务的组成q例例转帐事务转帐事务(A=10000,B=20000,转帐金额转帐金额5000)START T1;READ(A,t);t:=t 5000;WRITE(A,t);READ(B,t);t:=t+5000;WRITE(B,t);OUTPUT(A);OUTPUT(B);COMMIT T1;10.2 10.2 并发控制并发控制q例例银行的转帐业务:从银行的转帐业务:从银行存款帐号银行存款帐号A A(当前金额当前金额1000010000元)元)转转50005000元到银行存款帐号元到银行存款帐号B B(当前金额当前金额2000020000元)元)转

    35、帐事务转帐事务内存变量内存变量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;500050005000500020000200003 3READ(B)to X;R

    36、EAD(B)to X;2000020000500050002000020000X:=X+5000;X:=X+5000;25000250005000500020000200004 4WRITE(X)to B;WRITE(X)to B;2500025000500050002500025000ENDEND-500050002500025000第10章 事务处理、并发控制与故障恢复技术10.2 并发控制技术2910.2 10.2 并发控制技术并发控制技术10.2.1 10.2.1 事务的并发执行事务的并发执行10.2.2 10.2.2 封锁封锁10.2.3 10.2.3 封锁协议封锁协议10.2.4

    37、10.2.4 两阶段封锁协议两阶段封锁协议10.2.5 10.2.5 封锁粒度封锁粒度10.2.6 10.2.6 活锁与死锁活锁与死锁10.2.1 10.2.1 事务的并发执行事务的并发执行q并发性并发性数据库是一个多用户共享系统数据库是一个多用户共享系统多个事务的执行方式多个事务的执行方式串行执行串行执行v以事务为单位,多个事务依次顺序执行以事务为单位,多个事务依次顺序执行v前一个事务对数据库的访问操作执行结束后,再前一个事务对数据库的访问操作执行结束后,再去处理下一个事务对数据库的访问操作去处理下一个事务对数据库的访问操作并发执行并发执行v以事务为单位,按一定调度策略同时执行以事务为单位,

    38、按一定调度策略同时执行并发执行的可串行化并发执行的可串行化(SerializabilitySerializability)v如果一组事务并发执行的结果等价于它们之间的如果一组事务并发执行的结果等价于它们之间的某种串行执行的结果,则称其为可串行化调度。某种串行执行的结果,则称其为可串行化调度。v用于实现并发事务的可串行化调度的技术被称为用于实现并发事务的可串行化调度的技术被称为并发控制并发控制(Concurrent Control)Concurrent Control)技术。技术。10.2.1 10.2.1 事务的并发执行事务的并发执行 用用 户户1 用用 户户2 用用 户户n 事事 务务 管管

    39、 理理 器器 调调 度度 器器 封封 锁锁 管管 理理 器器 被被 推推 迟迟的的 操操 作作 D B M S内内 存存 缓缓 冲冲 区区 用用 户户 事事 务务 并并 发发 执执 行行 示示 意意 图图 数数 据据 库库(D i s k)R E A D W R I T E I N P U T O U T P U T 10.2.1 10.2.1 事务的并发执行事务的并发执行q几个概念几个概念调度调度串行调度串行调度可串行化调度可串行化调度事务及其调度的表示方法事务及其调度的表示方法冲突可串行化冲突可串行化冲突冲突优先图优先图冲突可串行性判断冲突可串行性判断10.2.1 10.2.1 事务的并发

    40、执行事务的并发执行q调度调度一个或多个事务中的数据库访问操作按照它们的执行时一个或多个事务中的数据库访问操作按照它们的执行时间排序形成的一个操作序列。间排序形成的一个操作序列。数据库访问操作数据库访问操作v用户事务对于数据库的访问操作包括用户事务对于数据库的访问操作包括READ和和WRITE,这是事务对数据库缓冲区中的数据的这是事务对数据库缓冲区中的数据的读读和和写写操作。在这里我们忽略了对于磁操作。在这里我们忽略了对于磁盘的盘的INPUT和和OUTPUT操作。操作。v驻留在内存缓冲区中的同一个数据对象驻留在内存缓冲区中的同一个数据对象A,有可能有可能同时被若干个事务同时被若干个事务读读或或写

    41、写。我们在考虑。我们在考虑一个一个调度调度时,最关心的是这一组事务以一种时,最关心的是这一组事务以一种什么样的顺序来什么样的顺序来读读/写写内存缓冲区中的数据。内存缓冲区中的数据。v同一个事务的一组同一个事务的一组读读/写写操作在操作在调度调度中的中的执行顺序是固定不变的,但是并发事务的不同交执行顺序是固定不变的,但是并发事务的不同交叉执行方式就构成了不同的叉执行方式就构成了不同的调度调度。10.2.1 10.2.1 事务的并发执行事务的并发执行q串行调度串行调度如果一个调度的操作组成方式如下:首先是一个事务的如果一个调度的操作组成方式如下:首先是一个事务的所有操作,然后是另一个事务的所有操作

    42、,依此类推,所有操作,然后是另一个事务的所有操作,依此类推,则我们称该调度是串行的,或称为则我们称该调度是串行的,或称为串行调度串行调度。任何一个串行调度均具有以下性质任何一个串行调度均具有以下性质v在该调度中任意取两个事务在该调度中任意取两个事务T T1 1和和T T2 2,如果如果T T1 1的某个的某个操作在操作在T T2 2的某个操作之前,则的某个操作之前,则T T1 1的所有操作都在的所有操作都在T T2 2的所有操作之前。的所有操作之前。v不存在不同事务之间的交叉执行现象不存在不同事务之间的交叉执行现象v并发事务的串行调度执行方式不会破坏数据库状并发事务的串行调度执行方式不会破坏数

    43、据库状态的一致性态的一致性10.2.1 10.2.1 事务的并发执行事务的并发执行q例例10.1:银行转账银行转账事务事务T T1 1从账号从账号A A转转1000010000至账号至账号B B事务事务T T2 2从账号从账号A A转转10%10%的款项至账号的款项至账号B B设帐号设帐号A A与帐号与帐号B B的初值都是的初值都是2000020000,数据库状态的一,数据库状态的一致性要求是:致性要求是:A+B=40000A+B=40000,则事务则事务T T1 1与事务与事务T T2 2的串的串行调度如下:行调度如下:v调度调度1 1(图(图10.2 10.2 ):):T T1 1,T T

    44、2 2v调度调度2 2(图(图10.3 10.3 ):):T T2 2,T T1 1在调度在调度1 1或调度或调度2 2执行结束后,数据库的状态是不同的,执行结束后,数据库的状态是不同的,但都满足状态的一致性要求。但都满足状态的一致性要求。调度调度1(初值(初值:A=B=20000A=B=20000)T T1 1T T2 2TempTempA AB B1 1Read(A)Read(A)200002000020000200002 2A:=A-10000A:=A-100003 3Write(A)Write(A)10000100004 4Read(B)Read(B)5 5B:=B+10000B:=B

    45、+100006 6Write(B)Write(B)30000300007 7Read(A)Read(A)8 8Temp:=ATemp:=A*0.10.1100010009 9A:=A-TempA:=A-Temp1010Write(A)Write(A)900090001111Read(B)Read(B)1212B:=B+TempB:=B+Temp1313Write(B)Write(B)3100031000图图10.2 10.2 串行执行之一串行执行之一 (结果:结果:A=9000,B=31000)A=9000,B=31000)调度调度2(初值(初值:A=B=20000A=B=20000)T T1

    46、 1T T2 2TempTempA AB B1 1Read(A)Read(A)200002000020000200002 2Temp:=ATemp:=A*0.10.1200020003 3A:=A-TempA:=A-Temp4 4Write(A)Write(A)18000180005 5Read(B)Read(B)6 6B:=B+TempB:=B+Temp7 7Write(B)Write(B)22000220008 8Read(A)Read(A)9 9A:=A-10000A:=A-100001010Write(A)Write(A)800080001111Read(B)Read(B)1212B:

    47、=B+10000B:=B+100001313Write(B)Write(B)3200032000图图10.3 10.3 串行执行之二串行执行之二 (结果:结果:A=8000,B=32000)A=8000,B=32000)10.2.1 10.2.1 事务的并发执行事务的并发执行q可串行化调度可串行化调度每个串行调度都将保持数据库状态的一致性。但也存在其每个串行调度都将保持数据库状态的一致性。但也存在其它的调度(非串行调度)能够保证数据库状态的一致性。它的调度(非串行调度)能够保证数据库状态的一致性。如果一个调度对数据库状态的影响和某个串行调度相同,如果一个调度对数据库状态的影响和某个串行调度相同

    48、,则我们称该调度是可串行化的,或称为则我们称该调度是可串行化的,或称为可串行化调度可串行化调度。例:例:调度调度3(图(图10.4 ):并发事务的可串行化调度):并发事务的可串行化调度v等价于串行调度等价于串行调度1调度调度4(图(图10.5 ):不正确的并发调度):不正确的并发调度v与调度与调度1和调度和调度2都不等价都不等价调度调度3(初值(初值:A=B=20000A=B=20000)T T1 1T T2 2x xy yTempTempA AB B1 1Read(A,x)Read(A,x)2000020000-2000020000 20000200002 2 x:=x-10000 x:=x

    49、-1000010000100003 3 Write(A,x)Write(A,x)10000100004 4Read(A,y)Read(A,y)10000100005 5Temp:=yTemp:=y*0.10.1100010006 6y:=y-Tempy:=y-Temp900090007 7Write(A,y)Write(A,y)900090008 8Read(B,x)Read(B,x)20000200009 9 x:=x+10000 x:=x+1000030000300001010 Write(B,x)Write(B,x)30000300001111Read(B,y)Read(B,y)3000

    50、0300001212y:=y+Tempy:=y+Temp31000310001313Write(B,y)Write(B,y)3100031000图图10.4 10.4 并发执行可串行化并发执行可串行化 (结果:结果:A=9000,B=31000)A=9000,B=31000)调度调度4(初值(初值:A=B=20000A=B=20000)T T1 1T T2 2x xy yTempTempA AB B1 1Read(A,x)Read(A,x)2000020000-2000020000 20000200002 2 x:=x-10000 x:=x-1000010000100003 3Read(A,y

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第10章事务处理、并发控制与故障恢复技术课件.ppt
    链接地址:https://www.163wenku.com/p-5207446.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库