数据库原理与应用(陈庆奎)4-11 (3)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第6章 数据库事务管理
例6.1 有一个商品销售事务T,销售了一定数量(如10)的某 种商品,用X、Y表示该商品的库存量和销售量。其操作如下:
T: READ(X); X:=X-10; WRITE(X); READ(Y); Y:=Y+10; WRITE(Y);
例6.1是一个事务的例子,其中READ(X)表示从数据库读X, WRITE(X)表示向数据库写X(下文也遵循本约定)。在该事务T 中,对数据库有4 个操作。其中,两个READ表示从数据库中 读取数据,两个WRITE表示将数据写回到磁盘数据库物理文件 中。
第6章 数据库事务管理
第6章 数据库事务管理
6.1 事务 6.2 并发控制 6.3 数据库恢复系统 习题
第6章 数据库事务管理
6.1 事 务
DBMS是以事务的方式来管理用户对数据库操作的。事务 的主要特点是并发执行,并且在系统发生故障时能够进行恢复。 在本章,我们先介绍事务的概念和性质,然后讨论事务的并发 控制和数据系统恢复技术。 6.1.1 事务概念
2.事务的ACID性质 为保证数据的完整性,DBMS中的事务应具备如下4个性 质(简称ACID): (1) 原子性(Atomicity)。事务中的所有数据库操作是一个整 体,不可分割。事务执行时,要么执行所有的数据库操作,要 么所有的操作都不执行。事务的原子性保证事务在执行结束时
第6章 数据库事务管理
(4) 成功执行。事务在局部提交过程中不发生任何故障, 对数据库的操作均已写入数据库物理存储磁盘,事务完全提交 成功,事务就“成功结束”。
(5) 异常中止。进入“失败状态”的事务必须撤销(即回滚) 对数据库的已进行的操作,才不会破坏数据库。在下文,我们 会发现数据库的原子性也说明了这一点:事务中的所有对数据 库的操作必须全部执行成功。如果有某个数据库操作失败,其 他已执行的操作必须进行回滚。事务回滚完所有已执行的数据 库操作,数据库恢复到事务开始前的状态,事务异常中止。
第6章 数据库事务管理
(3) 隔离性(Isolation)。在有多个事务并发执行时,一个事 务的执行不被其他事务所干扰,并发执行的结果应与这些事务 以不同顺序执行得到的结果相一致,这称做事务达到了隔离性 要求。事务的隔离性是由DBML的并发子系统实现的。在例6.1 中,如果T在执行的同时,还有其他事务也正在执行,T的执行 不受其他事务所影响,那么表明,事务间是隔离的。
第6章 数据库事务管理
6.1.2 事务的状态与特性 1.事务的状态 事务在执行过程中可分为5个状态:活动、局部提交、成
功执行、失败和异常中止。这5个状态的转化关系如图6.1所示。 下面对各个状态进行说明。
(1) 活动状态。事务在BEGIN TRANSACTION(开始事务) 之后便进行活动状态。活动状态中事务要执行一系列对数据库 的读/写操作及其对数据的处理。注意,此时的“写”数据库存 放系统缓存,并未写入物理磁盘。
事务(Transaction)是DBMS的最小逻辑工作单位,由一系列 数据库操作组成。在RDBMS中,一个事务可以是一个SQL、一 组SQL语句或一个完整的程序。事务可以看做是DBMS执行的内 部程序,相当于操作系统里的“进程”。但事务跟普通的应用 程序是完全不一样的,一个应用程序通常可以包含或不包含, 也可以包含一个或多个事务。在DBMS中,用户可以显示地定 义事务的开始和结束,也可以由DBMS按缺省规定方式进行划 分。
第6章 数据库事务管理
6.1.3 原子性与持久性的实现 在前面我们分析了事务产生异常的原因。由于事务应具备
原子性,事务对数据库的操作应该是一个整体。事务运行时的 异常中断就会造成数据库处于不一致状态。DBMS必须能够将 这些未完成的事务从数据库中清除出去,也就是说必须确保事 务的原子性:要么执行所有的数据库操作,要么所有的操作都 不执行。DBMS通过撤销(Undo)所有异常中断的事务中的数据 操作来达到事务的原子性。这要求有机制能够实现事务是如何 运行的,对数据库执行了怎样的操作。为了实现这个机制, DBMS将事务对数据库的“写”操作都记录到日志里,当事务 执行过程中产生异常需要撤销操作时,通过查询日志得到“写” 之前的值,并将这个值重新“写”入数据库。如果在已经结束 的事
(2) 局部提交。事务在执行完所有语句之后,并不能表示 事务也成功执行,只是进行局部提交状态。事务执行结束并不 能代表数据已写入磁盘,因此需要将数据按一定顺序写入磁盘, 这就是局部提交。
第6章 数据库事务管理
(3) 失败状态。事务在执行过程中或局部提交过程中,由 于某种原因导致事务执行发生故障,事务就进入失败状态。失 败状态的事务对数据库的操作不能进行提交,必须进行撤销。
不存在一部分数据库操作被成功执行,而另一部分数据库操作 没有成功执行的情况。Hale Waihona Puke Baidu此,用户不必担心事务是否完全执行 而对数据库完整性造成的破坏。在例6.1中的事务T中,对数据 库操作的4个语句,要么全都执行,要么一个也不做。事务的 原子性是由DBMS的事务管理子系统来实现的。
(2) 一致性(Consistency)。每个单独执行的事务的执行结果 应该使数据库从一个一致性状态转换到另一个一致性状态。换 句话说,数据库中的数据不会因事务的执行而遭受破坏。事务 的一致性可由编写事务程序的应用程序员完成。在例6.1的例子 中,事务T执行前后都应该满足X=Y+Z。
第6章 数据库事务管理
对异常中止事务分两种情况进行处理。第一种情况是由事 务实现程序存在逻辑错误引起的异常中止。对这类异常终止的 处理是查检事务实现程序是否存在错误,如果有则进行改正, 再重新执行事务。第二种情况是由硬件、运行环境或系统故障 引起的异常中止。通常,出现这类异常之后,先检查并排除故 障,然后再重新执行事务。
(4) 持久性(Durability)。事务的持久性是指数据库中一旦一 个事务执行成功,它对数据库中数据的改变是永久的,不受后 来对数据库的操作或发生故障所影响。事务的持久性是由 DBMS的恢复子系统实现的。事务的持久性是由DBMS的恢复 子系统实现的。如例6.1,执行成功了,那么它对数据库的影响 是永久的。也就是,销售量增加10,库存量减少10。
相关文档
最新文档