欢迎来到天天文库
浏览记录
ID:21985926
大小:795.50 KB
页数:130页
时间:2018-10-21
《事务及恢复技术》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Chapter2事务(transaction)1为什么需要事务?银行转账系统A=2000B=1000事务A=A-100B=B+100Output(A)Output(B)故障时,数据库中A,B值分别为多少?断电或其他故障本例表明,在执行组操作时,需要引入一种控制机制,保证组操作要不全部执行,要不全部取消,以保证结果的正确性。2概念事务(Transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位事务是恢复和并发控制的基本单位3事务的ACID特性(1)原子性(Atomicity):事务是数据库的逻辑工作单位,事务中包括的诸
2、操作要么都做,要么都不做。一致性(Consistency):事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态4事务的ACID特性(2)隔离性(Isolation):对并发执行而言,一个事务的执行不能被其他事务干扰一个事务内部的操作及使用的数据对其它并发事务是隔离的并发执行的各个事务之间不能互相干扰持续性(Durability)/永久性(Permanence)一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。5一致性学生数据库IC0:学号唯一IC1:每门课有先修课,学生必须先完成先修课才能选当前
3、课IC2:每门课有最高限选人数……DBMS要保证事务的执行没有违反任何约束6原子性银行转帐:从帐号A中取出一万元,存入帐号B。定义一个事务,该事务包括两个操作这两个操作要么全做,要么全不做全做或者全不做,数据库都处于一致性状态。如果只做一个操作,数据库就处于不一致性状态。ABA=A-1B=B+17隔离性(1)T1T2DBMSlocalcomputationlocalvariablessequenceofdboperationsoutputbyT1op1,1op1.2op2,1op2.2op1,1op2,1op2.2op1.2interleavedsequenceofd
4、boperationsinputtoDBMSbegintrans..op1,1..op1,2..commit8隔离性(2)T1T2ReadA=16ReadA=16A=A-1WriteA=15A=A-3WriteA=139定义事务BEGINTRANSACTIONSQL语句1SQL语句2……COMMITTRANSACTIONBEGINTRANSACTIONSQL语句1SQL语句2……ROLLBACKTRANSACTIONCOMMIT:事务正常结束,提交事务的所有操作事务中所有对数据库的更新永久生效ROLLBACK:事务异常终止。在运行过程中发生了故障,回滚事务的所有更新操
5、作,事务滚回到开始时的状态。10实现事务的隔离性:并发控制多事务执行方式(1)串行执行每个时刻只有一个事务运行,其他事务必须等到这个事务结束以后方能运行不能充分利用系统资源,发挥数据库共享资源的特点11并发控制(2)(2)交叉并发方式(interleavedconcurrency)事务的并行执行是这些并行事务的并行操作轮流交叉运行。宏观并发,微观串行。是单处理机系统中的并发方式,能够减少处理机的空闲时间,提高系统的效率12并发控制(3)(3)同时并发方式(simultaneousconcurrency)多处理机系统中,每个处理机可以运行一个事务,多个处理机可以同时运行
6、多个事务,实现多个事务真正的并行运行最理想的并发方式,但受制于硬件环境13事务并发执行带来的问题可能会存取和存储不正确的数据,破坏事务的隔离性和数据库的一致性时间更新事务T1数据库中A的值读事务T2t0100t1FINDAt2A:=A-30t3UPDAt470FINDAt5ROLLBACKt610014并发控制机制的任务对并发操作进行正确调度保证事务的隔离性保证数据库的一致性15丢失更新问题读脏数据问题不可重复读问题三个关键问题16丢失更新描述:事务1与事务2从数据库中读入同一数据并修改,事务2的提交结果破坏了事务1提交的结果,导致事务1的修改被丢失。17丢失更新时间
7、更新事务T1数据库中A的值更新事务T2T0100t1FINDAt2FINDAt3A:=A-30t4A:=A2t5UPDAt670UPDAt720018读脏数据事务1修改某一数据,并将其写回磁盘事务2读取同一数据事务1由于某种原因被撤消,这时事务1已修改过的数据恢复原值事务2读到的数据就与数据库中的数据不一致,是不正确的数据,又称为“脏”数据。19读脏数据时间更新事务T1数据库中A的值读事务T2t0100t1FINDAt2A:=A-30t3UPDAt470FINDAt5ROLLBACKt610020不可重复读事务1读取数据后,事务2执行更新操作,使事务
此文档下载收益归作者所有