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 小于正确值). 可通过串行(即一个接一个)执行事务来确保隔离 性. 但是并发执行多个事务具有很多好处
事务状态 Active,初始状态;事务执行时也处于此状态 Partially committed,最后一条语句执行之后 Failed,发现不能继续正常执行之后 · Aborted,事务已回滚并且数据库已恢复到事务 开始前的状态之后.此后有两种选择: 重启事务一仅当非内部逻辑错误时 杀死事务 Committed,事务成功结束之后
事务状态 • Active, 初始状态; 事务执行时也处于此状态 • Partially committed, 最后一条语句执行之后. • Failed, 发现不能继续正常执行之后. • Aborted, 事务已回滚并且数据库已恢复到事务 开始前的状态之后. 此后有两种选择: – 重启事务 – 仅当非内部逻辑错误时 – 杀死事务 • Committed, 事务成功结束之后
partially committed committed active failed aborted
并发执行 多个事务可同时运行.好处是 增加处理器和磁盘的利用率,导致更好的事务吞 吐量:一个事务正在使用CPU而另一个正在读写 磁盘 减少事务的平均响应时间:短事务不应等在长事 务之后 并发控制方笑-达到隔离性的机制,即控制并发事 务的交互以防止它们破坏数据库的一致性
并发执行 • 多个事务可同时运行. 好处是: – 增加处理器和磁盘的利用率, 导致更好的事务吞 吐量: 一个事务正在使用CPU而另一个正在读写 磁盘 – 减少事务的平均响应时间: 短事务不应等在长事 务之后. • 并发控制方案 – 达到隔离性的机制, 即控制并发事 务的交互以防止它们破坏数据库的一致性
调度 调度-并发事务的指令按时间顺序执行的序列 事务集合的一个调度 必须包括所有事务的所有指令 必须保持各个事务内部的指令顺序
调度 • 调度 –并发事务的指令按时间顺序执行的序列 – 事务集合的一个调度 • 必须包括所有事务的所有指令 • 必须保持各个事务内部的指令顺序
令T从4转账$50到B,T2从A转账余额的10%到 B.下列是一个串行调度(教材中的 Schedule1) 先T后T2 12 read(A) A:=A-50 write(A) read(B) B:=B+5 rite (B) read(A) temp: =A*O1 A: =A-temp write (A) ead (B B: =B+temp write(B)
• 令T1 从A 转账$50到B, T2 从A 转账余额的10%到 B. 下列是一个串行调度 (教材中的Schedule 1), 先T1 后T2