第10章数据库的事务处理 >10.1事务( Transaction)的概念 >10.2事务的状态 >10.3事务的特性 >10.4 SQL Server中的事务 10n
1 第10章 数据库的事务处理 ➢ 10.1 事务(Transaction)的概念 ➢ 10.2 事务的状态 ➢ 10.3 事务的特性 ➢ 10.4 SQL Server中的事务
10.1事务( Transaction)的概念≌ >事务是用户定义的数据库操作序列,这些操作可作为 个完整的工作单元。一个事务内的所有语句是一个整 体,要么全部执行,要么全部不执行。即事务是不可再 分的原子性工作。 如在银行业务中,“从帐户A转移资金X到帐户B”就是 个典型的事务。这个事务可以分解为两个动作: (1)从账户A减去金额X。 (2)在账户B中加上金额X。 20n
2 10.1 事务(Transaction)的概念 ➢事务是用户定义的数据库操作序列,这些操作可作为 一个完整的工作单元。一个事务内的所有语句是一个整 体,要么全部执行,要么全部不执行。即事务是不可再 分的原子性工作。 如在银行业务中, “从帐户A转移资金X到帐户B”就是一 个典型的事务。这个事务可以分解为两个动作: (1)从账户A减去金额X。 (2)在账户B中加上金额X
10.2事务的状态 基本术语 中止事务:执行中发生故障、不能停止执行完成的事 务; 事务回滚( ROLLBACK):将中止事务对数据库所作 的更新撤销掉。 已提交事务:成功地执行完成的任务。 30八
3 ➢ 基本术语 • 中止事务:执行中发生故障、不能停止执行完成的事 务; • 事务回滚(ROLLBACK ):将中止事务对数据库所作 的更新撤销掉。 • 已提交事务:成功地执行完成的任务。 10.2 事务的状态
事务的基本操作包括: 事务开始( BEGIN TRANSACTION)。事务开始执行。 事务读写(Read/ Write)。事务进行数据操作。 事务结束( END TRANSACTI0N)。事务完成所有的读/写操 作 事务交付( COMMIT TRANSACTI0N)。事务完成所有的读/写 操作,并保存操作结果。 40八
4 ➢事务的基本操作包括: •事务开始(BEGIN_TRANSACTION)。事务开始执行。 •事务读写(Read/Write)。事务进行数据操作。 •事务结束(END_TRANSACTION)。事务完成所有的读/写操 作。 •事务交付(COMMIT_TRANSACTION)。事务完成所有的读/写 操作,并保存操作结果
>事务的状态: 部分提交状态 提交状态 活动状态 失败状态 中止状态 图10.1事务状态图 50八
5 活动状态 失败状态 部分提交状态 提交状态 中止状态 图10.1 事务状态图 ➢事务的状态:
10.3事务的特性 事务所必须具有的重要特性包括: (1)原子性( Atomicity)。一个事务是一个不可分割 的工作单位,事务在执行时,应该遵守“要么不做,要 么全做”的原则,即不允许事务部分的完成。 >即使因为故障而使事务未能完成,它执行的部分结果 要被取消。 6U八
6 10.3 事务的特性 事务所必须具有的重要特性包括: (1)原子性(Atomicity)。一个事务是一个不可分割 的工作单位,事务在执行时,应该遵守“要么不做,要 么全做” 的原则,即不允许事务部分的完成。 ➢即使因为故障而使事务未能完成,它执行的部分结果 要被取消
(2)一致性( Consistency)。所谓数据库的一致状态 是指数据库中的数据满足完整性约束。 例如,银行企业中,“从帐号A转移资金额R到帐号B” 是一个典型的事务,这个事务包括两个操作,从帐 号A中减去资金额R和在帐号B中增加资金额R,如果 只执行其中一个操作,则数据库处于不一致状态, 帐务会出现问题。也就是说,两个操作要么全做, 要么全不做,否则就不能成为事务。 可见事务的一致性与原子性是密切相关的。 70八
7 (2)一致性(Consistency)。所谓数据库的一致状态 是指数据库中的数据满足完整性约束。 例如,银行企业中, “从帐号A转移资金额R到帐号B” 是一个典型的事务,这个事务包括两个操作,从帐 号A中减去资金额R和在帐号B中增加资金额R,如果 只执行其中一个操作,则数据库处于不一致状态, 帐务会出现问题。也就是说,两个操作要么全做, 要么全不做,否则就不能成为事务。 ➢ 可见事务的一致性与原子性是密切相关的
(3)隔离性( Isolation)。如果多个事务并发地执行, 应像各个事务独立执行一样,一个事务的执行不能被 其他事务干扰。即一个事务内部的操作及使用的数据 对并发的其他事务是隔离的。 并以控制就是为了保证事务间的隔离性。 (4)持久性( Durability)。指一个事务一且提交,它 对数据库中数据的改变就应该是持久的,即使数据库 因故障而受到破坏,DBMS也应该能够恢复。 80
8 (3)隔离性(Isolation)。如果多个事务并发地执行, 应像各个事务独立执行一样,一个事务的执行不能被 其他事务干扰。即一个事务内部的操作及使用的数据 对并发的其他事务是隔离的。 ➢ 并以控制就是为了保证事务间的隔离性。 (4)持久性(Durability)。指一个事务一旦提交,它 对数据库中数据的改变就应该是持久的,即使数据库 因故障而受到破坏,DBMS也应该能够恢复
上述的四个特性也简称为ACID特性,保证ACID特性 是事务处理的重要任务。事务的ACID特性可能遭到破 坏的原因有: )多个事务并行运行时,不同事务的操作交叉执行。 2)事务在运行过程中被强迫停止。 下面是一个事务的例子
9 ➢ 上述的四个特性也简称为ACID特性,保证ACID特性 是事务处理的重要任务。事务的ACID特性可能遭到破 坏的原因有: 1)多个事务并行运行时,不同事务的操作交叉执行。 2)事务在运行过程中被强迫停止。 ➢ 下面是一个事务的例子
例如一个事务,从帐号A转移资金额R到帐号B: BEGIN TRANSACTION READ A A←-A-R IF A<O /*A款不足* THEN BEGIN DISPLAY“A款不足” ROLLBACK END ELSE/*拨款* BEGIN B←-B+R DISPLAY“拨款完成” COMMIT END 10 U∩
10 ➢ 例如 一个事务,从帐号A转移资金额R到帐号B: BEGIN TRANSACTION READ A A←A-R IF A<0 /* A 款不足*/ THEN BEGIN DISPLAY “A款不足” ROLLBACK END ELSE /* 拨款 */ BEGIN B←B+R DISPLAY “拨款完成” COMMIT END