4.3事务 事务概念 事务状态 原子性与持久性的实现 并发执行 可串行性 ·可恢复性 隔离性的实现 SQL中事务的定义 ·检测可串行性
4.3 事务 • 事务概念 • 事务状态 • 原子性与持久性的实现 • 并发执行 • 可串行性 • 可恢复性 • 隔离性的实现 • SQL中事务的定义 • 检测可串行性
事务概念 享务是程序的逻辑运行单位 事务必须保持数据库的一致性 在事务执行过程中,数据库可能处于不一致状态 当事务提交时,数据库必须处于一致状态 要处理的两个问题 各种故障,如硬件故障和系统崩溃 多个事务的并发执行
事务概念 • 事务是程序的逻辑运行单位 • 事务必须保持数据库的一致性 • 在事务执行过程中, 数据库可能处于不一致状态 • 当事务提交时, 数据库必须处于一致状态 • 要处理的两个问题: – 各种故障, 如硬件故障和系统崩溃 – 多个事务的并发执行
ACID性质 为保持数据一致性,数据库系统必须确保: 原子性( Atomicity):事务的操作要么完全执行, 要么全不做 状态一致性( Consistency):在隔离状态下事务 的执行保持数据库的一致性 ·隔离性( Isolation):尽管多个事务可以并发执 行,每个事务必须不了解其他并发执行的事务.事务 的中间结果对其他并发事务是不可见的 结果永久保持性( Durability):事务成功结束 后,对数据库所做的更新将永久化,即使再发生系统 故障也不受影响
ACID 性质 • 原子性(Atomicity) : 事务的操作要么完全执行, 要么全不做 • 状态一致性(Consistency): 在隔离状态下事务 的执行保持数据库的一致性 • 隔离性(Isolation): 尽管多个事务可以并发执 行, 每个事务必须不了解其他并发执行的事务. 事务 的中间结果对其他并发事务是不可见的 • 结果永久保持性(Durability): 事务成功结束 后, 对数据库所做的更新将永久化, 即使再发生系统 故障也不受影响. 为保持数据一致性, 数据库系统必须确保:
转账例 从账户A转移$50到账户B rea 2.A:=A-50 3. write(A 4. read(B) 5.B:=B+50 6. write (B) 致性要求一事务执行前后A与B之和保持不 变 原子性要求一若事务在第3步之后及第6步之前 失败,系统应确保事务所做更新不被反映到数据 库中,否则会出现不一致
转账例 • 从账户A 转移$50到账户B: 1. read(A) 2. A := A – 50 3. write(A) 4. read(B) 5. B := B + 50 6. write(B) • 一致性要求 – 事务执行前后 A 与 B 之和保持不 变. • 原子性要求 – 若事务在第3步之后及第6步之前 失败, 系统应确保事务所做更新不被反映到数据 库中, 否则会出现不一致
转账例(续) 持久性要求一一旦用户被告知事务已经完成(即 $50转账已经发生),则即使发生故障,事务对数据 库的更新也必须持久化 隔离性要求一若在第3步与第6步之间允许另 事务存取部分更新的数据库,该事务将看到不 致的数据库(4+B小于正确值) 可通过串行(即一个接一个)执行事务来确保隔离 性.但是并发执行多个事务具有很多好处
转账例 (续) • 持久性要求 — 一旦用户被告知事务已经完成 (即, $50 转账已经发生), 则即使发生故障, 事务对数据 库的更新也必须持久化. • 隔离性要求 — 若在第3步与第6步之间允许另一 事务存取部分更新的数据库, 该事务将看到不一 致的数据库(A + B 小于正确值). 可通过串行(即一个接一个)执行事务来确保隔离 性. 但是并发执行多个事务具有很多好处