数据库系统工程师-06事务和锁

上传人:re****.1 文档编号:410665121 上传时间:2022-07-14 格式:DOC 页数:8 大小:352.50KB
返回 下载 相关 举报
数据库系统工程师-06事务和锁_第1页
第1页 / 共8页
数据库系统工程师-06事务和锁_第2页
第2页 / 共8页
数据库系统工程师-06事务和锁_第3页
第3页 / 共8页
数据库系统工程师-06事务和锁_第4页
第4页 / 共8页
数据库系统工程师-06事务和锁_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《数据库系统工程师-06事务和锁》由会员分享,可在线阅读,更多相关《数据库系统工程师-06事务和锁(8页珍藏版)》请在金锄头文库上搜索。

1、第六讲事务和锁61 事务611 事务定义( 1)事务是由一系列操作序列构成的程序执行单元,这些操作要么都做,要么都不做,是一个不可分割的工作单位。例:如银行转帐。612 SQL 中事务的定义事务以 Begin transaction开始,以 Commit work 或 Rollback work结束。Commit work 表示提交,事务正常结束。Rollback work 表示事务非正常结束,撤消事务已做的操作,回滚到事务开始时状态。613 事务概念例:银行转帐:事务 T 从 A 帐户过户 50¥到 B 帐户。T:read (A);A:=A50;write (A);read (B);B:=B

2、+50;write (B);read (X) :从数据库传送数据项X 到事务的工作区中。write (X) :从事务的工作区中将数据项X写回数据库。614 事务特性( ACID)( 1)原子性 (Atomicity)事务中包含的所有操作要么全做,要么全不做。原子性由 恢复机制 实现。( 2)一致性 (Consistency)事务的隔离执行必须保证数据库的一致性。事务开始前, 数据库处于一致性的状态; 事务结束后, 数据库必须仍处于一致性状态。数据库的一致性状态由 用户来负责。如银行转帐,转帐前后两个帐户金额之和应保持不变。( 3)隔离性 (Isolation)系统必须保证事务不受其它并发执行事

3、务的影响。对任何一对事务 T1,T2,在 T1 看来, T2 要么在 T1 开始之前已经结束,要么在 T1 完成之后再开始执行。隔离性通过 并发控制机制 实现。( 4)持久性 (Durability)1一个事务一旦提交之后,它对数据库的影响必须是永久的。系统发生故障不能改变事务的持久性。持久性通过 恢复机制 实现。部分提交状态提交状态活动状态最后一条语成功完成,永失败状态中止状态初始状态事务无法继事务回滚,数据库恢事务是恢复和并发控制的基本单位。保证事务 ACID特性是事务处理的重要任务。62 数据库故障621 故障种类( 1)事务内部故障事务内部故障有些是可以通过事务程序本身发现,有些是非预

4、期的。( 2)系统故障( 3)介质故障622 故障恢复技术( 1)建立冗余数据A、数据转储I 、静态转储 II 、动态转储B、登录日志文件:必须遵循两大规则:登记次序严格按并发事务的时间顺序。必须先写数据后写数据库。I 、以记录为单位a 、各个事务的开始b 、各个事务的结束2c 、各个事务的所有更新d 、各个事务的所有更新 II 、以块为单位a 、事务标识b、操作类型( insert,delete,update)c 、操作对象d 、更新前数据的旧值(对插入操作而言,此项为空值)e 、更新后的新数据(对删除操作而言,此项为空值)( 2)利用冗余数据实施数据库恢复A、事务故障恢复:反向扫描B、系统

5、故障恢复:正向扫描C、介质故障恢复:需要DBA介入623 具有检查点的恢复技术624 数据库镜像63 并发执行631 并行 Vs 串行( 1)基本比较A、并行事务会破坏数据库的一致性。B、串行事务效率低。( 2)并行的优点A、一个事务由不同的步骤组成,所涉及的系统资源也不同。这些步骤可以并发执行,以提高系统的 吞吐量。B、系统中存在着周期不等的各种事务,串行会导致难于预测的时延。如果各个事务所涉及的是数据库的不同部分,采用并发会减少 平均响应时间 。( 3)核心问题:在保证一致性的前提下最大限度地提高并发度。632 并发操作带来的问题T1T2T1T2T1T2Read(A=16)Read(a=5

6、0)Read(c=100)Read(a=16)Read(b=100)C:=c*2A:=A-1C:=a+bWrite(c)Write(A)Read(b=100)A:=A-2B:=B*2RollbackWrite(A)Write(b)Read(c)Read(a=50)Read(b=200)C:=a+b( 1)丢失修改(2)不可重复读(3)读脏数据(污读)3633 导致的原因并发操作破坏了事务的隔离性, 并发操作就是要用正确的调度并发操作, 使一个事务不受其他事务的干扰,从而造成数据的不一致性。并发控制的主要技术是封锁(Locking )634 并发事务的调度T1T2T1T2Read(a)Read(

7、a)A:=a-50temp:=a*0.1Write(a)A:=a-tempRead(b)Write(a)B:=b-50Read(b)Write(b)B:=b+tempRead(a)Write(b)temp:=a*0.1Read(a)A:=a-tempA:=a-50Write(a)Write(a)Read(b)Read(b)B:=b+tempB:=b-50Write(b)Write(b)调度 1(串行调度)调度 2(串行调度)当有多个事务并发执行时T1T2T1T2Read(a)Read(a)A:=a-50A:=a-50Write(a)Read(a)Read(a)temp:=a*0.1temp:=

8、a*0.1A:=a-tempA:=a-tempWrite(a)Write(a)Read(b)Read(b)Write(a)B:=b-50Read(b)Write(b)B:=b-50Read(b)Write(b)B:=b+tempB:=b+tempWrite(b)Write(b)调度 3(并发调度,等价)调度 4(并发调度,不等价)( 1)调度:执行的顺序称为调度。( 2)事务的执行顺序称为一个调度, 表示事务的指令在系统中执行的时间顺序。(a)一组事务的调度必须保证:包含了所有事务的操作指令4一个事务中指令的顺序必须保持不变。(b) 串行调度在串行调度中,属于同一事务的指令紧挨在一起。对于有

9、n 个事务的事务组,可以有n!个有效调度。( c)并行调度在并行调度中,来自不同事务的指令可以交叉执行。当并行调度等价于某个串行调度时,则称它是正确的。635 可串行化如果多个事务在某个调度下的执行结果与这些事务在某个串行调度下的执行结果相同,则称这个调度为可串行化的调度。两个调度 S 与 S,参与两个调度的事务集是相同的,若 S 与 S满足下面三个条件,则称他们是等价的。( 1)对于每个数据项 Q,若事务 Ti 在调度 S 中读取了 Q的初始值,那么在调度S中 Ti 也必须读取 Q的初始值。( 2)对于每个数据项 Q,若事务 Ti 在调度 S 中执行了 read(Q) ,并且读取的值是由 T

10、j 产生的,则在调度S中 Ti 读取到的值也必须是须读由Tj 产生。( 3)对于每给数据项 Q,若在调度 S 中有事务执行了最后的 write ( Q)操作,则在调度 S中,该事务也必须执行最后的 write (Q)操作。条件( 1)( 2)保证了在两个调度中的每个事务都读取到相同的值,从而进行相同的计算。条件( 3)与条件( 1)( 2)共同保证两个调度得到相同的系统最终状态。例:调度 1 与调度 2 不等价,因为。调度 4 与调度 1、调度 2、调度 3 的任意一个都不等价,因为。 。调度 1 与调度 3 等价。用等价的概念来定义可串行化的概念:如果某个调度等价于于一个串行调度,则称这个调

11、度是可串行化的。可串行化是多个事务并发执行的正确性准则。636 可恢复性( 1)事务的恢复:一个事务失败了,应该能够撤消该事务对数据库的影响。如果有其它事务读取了失败事务写入的数据,则该事务也应该撤消。5T1T2read(A);不可恢复的调度write(A);read(A);可恢复调度:commit对于每对事务 T1与T2,read(B);如果 T2读取了 T1所写的数commit;据,则 T1必须先于 T2提交( 2)无级联调度T1T2T3read(A);read(B);级联调度:write(A);read(A)由于一个事务故障而commit导致一系列事务回滚write(A);commitread(A)无级联调度:commit对于每对事务 T1与T2,无级联调度必是可恢复调度如果 T2读取了 T1所写的数据,则 T1必须在 T2读取之前提交64 封锁封锁是实现并发控制的重要技术确切的控制由锁的类型决定基本的封锁类型有两种:排它锁: X和共享锁: SXS-XNNYSNYY-YYY65 封锁协议运用 X 锁和 S 锁两种基本封锁, 对数据加锁时, 还需要约定一些规则, 这些规则为封锁协议( 1)一级封锁协议:事务T 在修改数据 R 之前必须先对其加X 锁,直到事务结6束才释放。一级封锁保证防止丢失修改,并保证事务T 是可恢复的。不能保证。 。( 2)二级封锁协

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号