第十章 事务--概念

10.1 事务的概念
10-1

概念

解释

事务

参见第一章“引言――概念”的表1-5。

原子性

是指事务中的所有操作要么全部执行,要么都不执行的特性。

一致性

所谓一致性简单地说就是数据库中数据的完整性,包括它们的正确性。

隔离性

即使多个事务并发(同时)执行,每个事务都感觉不到系统中有其他的事务在执行。

持久性

持久性的含义是说,一旦事务成功执行之后,它对数据库的更新是永久的。

10.2 事务的状态
10-2

概念

解释

中止事务

执行中发生故障、不能执行完成的事务。

事务回滚

将中止事务对数据库的更新撤消掉。

已提交事务

成功执行完成的事务。

活动状态

事务开始执行后所处的状态。

部分提交状态

事务的最后一条语句被执行后的状态。

失败状态

事务正常的执行不能继续后的状态。

中止状态

事务回滚并且数据库被恢复到事务开始执行前的状态后的状态。

提交状态

事务成功完成之后的状态。

已经结束的事务

提交的或中止的事务。

10.3 原子性和持久性的实现
10-3

概念

解释

   
10.4 事务的并发执行
10-4

概念

解释

调度

调度就是指多个事务中所有指令的执行序列。

串行调度

由来自各个事务的指令序列组成,其中属于同一事务的指令在调度中紧挨在一起。

并发调度

由来自各个事务的全部指令组成,虽然属于不同事务的指令在调度中交叉在一起,但仍然保持其在各自事务中的先后顺序。


10.5 调度的可串行化
10-5

概念

解释

等价

Im和In是调度S的两条连续指令。若Im和In属于不同的事务且不冲突,则可以交换Im和In的顺序得到一个新的调度S,并称S与S是等价的。

冲突等价

如果调度S可以经过一系列非冲突指令交换变成调度S,则称S与S是冲突等价的。

冲突可串行化

称一个调度S是冲突可串行化的,是指该调度S与一个串行调度冲突等价。

视图等价

考虑两个调度S和S,其中参与两个调度的事务集是相同的。若调度S和S满足下面三个条件,则称S和S是视图等价的:

⑴对于每个数据项Q,若事务Ti在调度S中读取了Q的初始值,那么Ti在调度S中也必须读取Q的初始值;

⑵对于每个数据项Q,若事务Ti在调度S中执行了read(Q)并且读取的值是由Tj产生的(write(Q)),则TI在调度S中读取的值也必须是由Tj产生的(write(Q));

⑶对于每个数据项Q,若在调度S中有事务执行了最后的写操作write(Q),则在调度S中该事务也必须执行最后的写操作write(Q)。

视图可串行化

如果某个调度视图等价于一个串行调度,则说这个调度是视图可串行化的。

10.6 调度的可恢复性
10-6

概念

解释

可恢复调度

对于每对事务Ti和Tj,如果Tj读取了由Ti所写的数据项,则Ti应先于Tj提交。我们把这样的调度称为可恢复调度。

级联回滚

因一个事务的故障而导致一系列事务回滚的现象称为级联回滚。

无级联调度

对于每对事务Ti和Tj,如果Tj读取了由Ti所写的数据项,则Ti必须在Tj读取之前提交。我们把这样的调度称为无级联调度。

10.7 隔离性的实现
10-7

概念

解释

   
10.8 SQL中事务的定义
10-8

概念

解释

   
10.9 冲突可串行化的判定
表10-9

概念

解释

优先图

S是一个调度,由S构造一个有向图,称为优先图。该图由两部分G = (V,E)组成,其中V是顶点集,E是边集。顶点集由所有参与调度的事务组成。边集由满足下列三个条件之一的边TiTj组成:

�CTi的write(Q)在Tj的read(Q)之前执行;

�CTi的read(Q)在Tj的write(Q)之前执行;

�CTi的write(Q)在Tj的write(Q)之前执行。