事务的定义 定义7.1事务( transaction)是构成单一逻辑工 作单元的操作集合。 在程序中,事务以 BEGIN TRANSACTIO0N语句开始, 以 COMMIT语句或 ROLLBACK语句结束。 COMT语句表示事务执行成功地结束(提交),此 时告诉系统,数据库要进入一个新的正确状态,该事 务对数据库的所有更新都已交付实施(写入磁盘)。 ROLLBACK语句表示事务执行不成功地结束(应该 “回退”),此时告诉系统,已发生错误,数据库可 能处在不正确的状态,该事务对数据库的所有更新必 须被撤消,数据库应恢复该事务到初始状态
11 事务的定义 ◼定义7.1 事务(transaction)是构成单一逻辑工 作单元的操作集合。 ◼在程序中,事务以BEGIN TRANSACTION语句开始, 以COMMIT语句或ROLLBACK语句结束。 ◼COMMIT语句表示事务执行成功地结束(提交),此 时告诉系统,数据库要进入一个新的正确状态,该事 务对数据库的所有更新都已交付实施(写入磁盘)。 ◼ROLLBACK语句表示事务执行不成功地结束(应该 “回退”),此时告诉系统,已发生错误,数据库可 能处在不正确的状态,该事务对数据库的所有更新必 须被撤消,数据库应恢复该事务到初始状态
事务的ACID性质 性, 原子性( Atomicity):事务是一个不可分割 的工作单元。 致性( consistency):即数据不会应事务 的执行而遭受破坏。 隔离性( Isolation):在多个事务并发执行 时,系统应保证与这些事务先后单独执行 时的结果一样。 持久性( Durability):一个事务一旦完成全 部操作后,它对数据库的所有更新应永久 地反映在数据库中
12 事务的ACID性质 ◼ 性质 ◼ 原子性(Atomicity):事务是一个不可分割 的工作单元。 ◼ 一致性(Consistency):即数据不会应事务 的执行而遭受破坏。 ◼ 隔离性(Isolation):在多个事务并发执行 时,系统应保证与这些事务先后单独执行 时的结果一样。 ◼ 持久性(Durability):一个事务一旦完成全 部操作后,它对数据库的所有更新应永久 地反映在数据库中
例:事务及其性质 问题:设银行数据库中组合成一个事务: 有一转账事务T,从 账号A转一笔款子 T: BEGIN TRaNSaCtiON: ($50)到账号B。 read (A) 相应的操作如下: A:=A50 T: read(A) write (A) A:=A-50 if (A<O ROLLBACK; write (A) else read(B) B:=B+50 read (B) write(B) B:≡B+50 COMMIT: H write (B)
13 例: 事务及其性质 问题:设银行数据库中 有一转账事务T,从 账号A转一笔款子 ($50)到账号B。 相应的操作如下: T:BEGIN TRANSACTION; read(A) ; A:=A-50 ; write(A); if (A<0) ROLLBACK; else {read(B); B:=B+50 ; write(B); COMMIT;} T:read(A) ; A:=A–50 ; write(A); read(B) ; B:=B+50 ; write(B). 组合成一个事务:
事务提交和事务撤销 事务的所有操作都完成了,则事务提交 ( COMMIT),否则事务撤销( ROLLBACK)。 BEGIN TRANSACTION标志事务开始执行 BEGIN TRANSACTION和 COMMIT或 ROLLBACK一起保证了事务的四个性质。 对数据库访问的两个基本操作:读和写,但 完成写操作后,数据可能暂时放在内存中, 而非直接写进数据库
14 事务提交和事务撤销 ◼ 事务的所有操作都完成了,则事务提交 (COMMIT),否则事务撤销(ROLLBACK)。 ◼ BEGIN TRANSACTION标志事务开始执行。 ◼ BEGIN TRANSACTION和COMMIT或 ROLLBACK一起保证了事务的四个性质。 ◼ 对数据库访问的两个基本操作:读和写,但 完成写操作后,数据可能暂时放在内存中, 而非直接写进数据库
事务的状态变迁图 READ/WRITE 活动状态) 局部提交)<提交状态 状态 失败状态 异常中止状态 图74事务的状态变迁图
15 事务的状态变迁图 活动状态 局部提交 状态 提交状态 失败状态 异常中止状态 READ/WRITE 图7.4 事务的状态变迁图