数据库系统工程师-06事务跟锁.docVIP

  • 1
  • 0
  • 约4.28千字
  • 约 7页
  • 2019-03-29 发布于湖北
  • 举报
第六讲 事务和锁 6.1 事务 6.1.1 事务定义 (1)事务是由一系列操作序列构成的程序执行单元,这些操作要么都做,要么都不做,是一个不可分割的工作单位。 例:如银行转帐。 6.1.2 SQL中事务的定义 事务以Begin transaction开始,以Commit work或 Rollback work结束。 Commit work表示提交,事务正常结束。 Rollback work表示事务非正常结束,撤消事务已做的操作,回滚到事务开始时状态。 6.1.3 事务概念 例: 银行转帐:事务T从A帐户过户50¥到B帐户。 T: read(A); A := A – 50; write(A); read(B); B := B + 50; write(B); read(X):从数据库传送数据项X到事务的工作区中。 write(X):从事务的工作区中将数据项X写回数据库。 6.1.4 事务特性(ACID) (1)原子性(Atomicity) 事务中包含的所有操作要么全做,要么全不做。 原子性由恢复机制实现。 (2)一致性(Consistency) 事务的隔离执行必须保证数据库的一致性。 事务开始前,数据库处于一致性的状态;事务结束后,数据库必须仍处于一致性状态。 数据库的一致性状态由用户来负责。 如银行转帐,转帐前后两个帐户金额之和应保持不变。 (3)隔离性(Isolation) 系统必须保证事务不受其它并发执行事务的影响。 对任何一对事务T1,T2,在T1看来,T2要么在T1开始之前已经结束,要么在T1完成之后再开始执行。 隔离性通过并发控制机制实现。 (4)持久性(Durability) 一个事务一旦提交之后,它对数据库的影响必须是永久的。 系统发生故障不能改变事务的持久性。 持久性通过恢复机制实现。 活动状态 活动状态 失败状态 部分 提交状态 提交状态 中止状态 初始状态 事务无法继 续正常执行 事务回滚,数据库恢 复到事务开始前状态 最后一条语 句被执行后 成功完成,永 久写入数据库 事务是恢复和并发控制的基本单位。 保证事务ACID特性是事务处理的重要任务。 6.2 数据库故障 6.2.1 故障种类 (1)事务内部故障 事务内部故障有些是可以通过事务程序本身发现,有些是非预期的。 (2)系统故障 (3)介质故障 6.2.2 故障恢复技术 (1)建立冗余数据 A、数据转储 I、静态转储 II、动态转储 B、登录日志文件:必须遵循两大规则:登记次序严格按并发事务的时间顺序。必须先写数据后写数据库。 I、以记录为单位 a、各个事务的开始 b、各个事务的结束 c、各个事务的所有更新 d、各个事务的所有更新 II、以块为单位 a、事务标识 b、操作类型(insert,delete,update) c、操作对象 d、更新前数据的旧值(对插入操作而言,此项为空值) e、更新后的新数据(对删除操作而言,此项为空值) (2)利用冗余数据实施数据库恢复 A、事务故障恢复:反向扫描 B、系统故障恢复:正向扫描 C、介质故障恢复:需要DBA介入 6.2.3 具有检查点的恢复技术 6.2.4 数据库镜像 6.3 并发执行 6.3.1 并行 Vs 串行 (1)基本比较 A、并行事务会破坏数据库的一致性。 B、串行事务效率低。 (2)并行的优点 A、一个事务由不同的步骤组成,所涉及的系统资源也不同。这些步骤可以并发执行,以提高系统的吞吐量。 B、系统中存在着周期不等的各种事务,串行会导致难于预测的时延。如果各个事务所涉及的是数据库的不同部分,采用并发会减少平均响应时间。 (3)核心问题:在保证一致性的前提下最大限度地提高并发度。 6.3.2 并发操作带来的问题 T1 T2 T1 T2 T1 T2 Read(A=16) Read(a=50) Read(c=100) Read(a=16) Read(b=100) C:=c*2 A:=A-1 C:=a+b Write(c) Write(A) Read(b=100) A:=A-2 B:=B*2 Rollback Write(A) Write(b) Read(c) Read(a=50) Read(b=200) C:=a+b (1)丢失修改 (2)不可重复读 (3)读脏数据(污读) 6.3.3 导致的原因 并发操作破坏了事务的隔离性,并发操作就是要用正确的调度并发操作,使一

文档评论(0)

1亿VIP精品文档

相关文档