数据库系统中的数据是由DBMS统一管理和控制的,为了适应数据共享的环境,DBMS必须提供数据保护能力,以保证数据库中数据的安全可靠和正确有效。

7.1    事务的基本概念

事务 (Transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位

事务和程序是两个概念:

在关系数据库中,一个事务可以是一条 SQL 语句,一组 SQL 语句或整个程序一个应用程序通常包含多个事务

事务是恢复和并发控制的基本单位

一、什么是事务

事务 (Transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位

事务和程序是两个概念

在关系数据库中,一个事务可以是一条 SQL 语句,一组 SQL 语句或整个程序一个应用程序通常包含多个事务

事务是恢复和并发控制的基本单位

二、如何定义事务

当用户没有显式地定义事务时,

DBMS 按缺省规定自动划分事务

事务结束

COMMIT

事务正常结束

提交事务的所有操作(读    +更新)

事务中所有对数据库的更新永久生效

ROLLBACK

事务异常终止

事务运行的过程中发生了故障,不能继续执行回滚事务的所有更新操作

事务滚回到开始时的状态

三、事务的特性    (ACID  特性 )
事务的  ACID  特性:

原子性( Atomicity )

一致性( Consistency)

隔离性( Isolation)

持续性( Durability    )

1.    原子性

事务是数据库的逻辑工作单位

事务中包括的诸操作要么都做,要么都不做

2.    一致性

事务执行的结果必须是使数据库从一个

一致性状态变到另一个一致性状态

一致性状态:

数据库中只包含成功事务提交的结果

不一致状态:

数据库中包含失败事务的结果

3.    隔离性

对并发执行而言

一个事务的执行不能被其他事务干扰

一个事务内部的操作及使用的数据对其他并发事务是隔离的并发执行的各个事务之间不能互相干扰

4.    持续性

持续性也称永久性(    Permanence)

一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。

接下来的其他操作或故障不应该对其执行结果有任何影响。

事务的特性

保证事务    ACID  特性是事务处理的任务

破坏事务    ACID  特性的因素

多个事务并行运行时,不同事务的操作交叉执行

事务在运行过程中被强行停止

系统故障的恢复

清除尚未完成的事务对数据库的所有修改

系统重新启动时,恢复程序要强行撤消( UNDO )所有未完成事务将缓冲区中已完成事务提交的结果写入数据库

系统重新启动时,恢复程序需要重做( REDO )所有已提交的事务恢复机制涉及的关键问题

1.    如何建立冗余数据

数据转储(  backup)

登录日志文件(    logging )

2.    如何利用这些冗余数据实施数据库恢复

1.静态转储

在系统中无运行事务时进行转储

转储开始时数据库处于一致性状态

转储期间不允许对数据库的任何存取、修改活动

优点:实现简单
缺点:降低了数据库的可用性

转储必须等用户事务结束

新的事务必须等转储结束

动态转储

转储操作与用户事务并发进行

转储期间允许对数据库进行存取或修改

优点

不用等待正在运行的用户事务结束

不会影响新事务的运行

动态转储的缺点

不能保证副本中的数据正确有效

7.4.2    登记日志文件

一、日志文件的内容

1.    什么是日志文件

日志文件 (log) 是用来记录事务对数据库的

更新操作的文件

2.    日志文件的格式

以记录为单位的日志文件以数据块为单位的日志文件

3.    日志文件内容

各个事务的开始标记    (BEGIN TRANSACTION)

各个事务的结束标记    (COMMIT    或 ROLLBACK)

各个事务的所有更新操作

与事务有关的内部更新操作

日志文件中的一个日志记录    (log    record)

4.    基于记录的日志文件每条日志记录的内容

事务标识

操作类型(插入、删除或修改)

操作对象(记录    ID 、 Block NO. )

更新前数据的旧值(对插入操作而言,此项为空值)

更新后数据的新值(对删除操作而言    , 此项为空值)

5.    基于数据块的日志文件每条日志记录的内容

事务标识(标明是那个事务)

操作对象(记录    ID 、 Block NO. )

更新前数据所在的整个数据块的值(对插入操作而言,此项为空值)

更新后整个数据块的值(对删除操作而言    , 此项为空值)

常用恢复技术

事务故障的恢复

UNDO

系统故障的恢复

UNDO + REDO
介质故障的恢复

重装备份并恢复到一致性状态
+ REDO