数据库系统概论第八章.ppt
《数据库系统概论第八章.ppt》由会员分享,可在线阅读,更多相关《数据库系统概论第八章.ppt(54页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据库原理与应用数据库原理与应用数据库系统概论第4版王 珊 萨师煊计算机科学与工程学院计算机科学与工程学院第八章第八章 数据库保护数据库保护事务的并发控制数据库的备份与恢复计算机科学与工程学院计算机科学与工程学院8.1 事务的基本概念事务的基本概念1、事务事事务务是是用用户户定定义义的的一一个个数数据据库库的的操操作作序序列列,这这些些操操作作要要么么全全做做,要要么么全全不不做做,是是一一个个不不可分割的整体。可分割的整体。BEGIN TRANSACTIONSELECTUPDATECOMMIT(或ROLLBACK)计算机科学与工程学院计算机科学与工程学院8.1 事务的基本概念事务的基本概念例
2、:银行转帐业务,从A帐户将1000元转帐到B帐户。实现的过程:A帐户余额是否足够;A帐户余额减去1000;检查B帐户是否合法;B帐户余额加上1000;这些操作要么都做,要么都不做!计算机科学与工程学院计算机科学与工程学院8.1 事务的基本概念事务的基本概念2、事务的特性原子性原子性(Atomicity)要么全部执行,要么完全不执行 一致性一致性(Consistency)事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。隔离性隔离性(Isolation)一个事务的执行不能被其他事务干扰。持续性持续性(Durability)一个事务一旦提交,它对数据库的改变就是永久性的。计算机科学
3、与工程学院计算机科学与工程学院8.1 事务的基本概念(续)事务的基本概念(续)事务是恢复和并发控制的基本单位。事务的ACID特性可能被破坏的因素:多个事务并发执行,产生了操作交叉;多个事务并发执行,产生了操作交叉;事务在运行过程中被强行停止。事务在运行过程中被强行停止。计算机科学与工程学院计算机科学与工程学院8.1 事务的基本概念(续)事务的基本概念(续)3、SQL Server中事务的模式显式事务显式事务通过SQL事务语句而定义的事务。BEGIN TRANSCATION、COMMIT TRANSCATION、(ROLLBACK TRANSCATION)隐式事务隐式事务SET IMPLICIT
4、Y_TRANSACTIONS ON、SET IMPLICITY_TRANSACTIONS OFF语句进入和退出隐式事务连接模式。自动事务模式自动事务模式当一个语句成功执行后,它被自动提交,而当事务执行过程中产生错误时,则被自动回滚。计算机科学与工程学院计算机科学与工程学院8.1 事务的基本概念(续)事务的基本概念(续)4、事务的使用实例在在DBMS中进行事务处理中进行事务处理利用显式事务的方式将一系列操作定义成一个事务,所有操作都完成,则事务提交,否则事务回滚。或者进入隐式事务方式,通过COMMIT TRANSACTION完成一个事务的提交。计算机科学与工程学院计算机科学与工程学院BEGIN
5、TRANIF EXISTS(SELECT*FROM BANK WHERE UID=A)BEGINIF(SELECT MONEY FROM BANK WHERE UID=A)1000 BEGINUPDATE BANK SET MONEY=MONEY-1000WHERE UID=ASELECT*FROM BANKIF EXISTS(SELECT*FROM BANK WHERE UID=B)BEGINUPDATE BANK SET MONEY=MONEY+1000WHERE UID=BCOMMIT TRAN ENDELSEROLLBACK TRAN ENDELSE PRINT A帐户余额不足!帐户余
6、额不足!ENDELSE PRINT 帐户不存在!帐户不存在!计算机科学与工程学院计算机科学与工程学院8.1 事务的基本概念(续)事务的基本概念(续)4、事务的使用实例在应用程序中设置事务在应用程序中设置事务例如:在java中,通过调用setAutoCommit(false)方法关系自动提交事务。采用commit()方法来提交数据库操作;rollback()方法来进行事务回滚。计算机科学与工程学院计算机科学与工程学院Connection conn=null;try try.conn=DriverManager.getConnection(connectionUrl);conn.setAutoCo
7、mmit(false);/禁止自动提交事务禁止自动提交事务/数据库操作数据库操作Statement stmt=conn.createStatement();String sqlText=update bank set money=money-1000 where uid=A;stmt.executeUpdate(sqlText);sqlText=select uid from bank where uid=B;ResultSet rs=stmt.executeQuery(sqlText);if(rs.next()sqlText=update bank set money=money+1000
8、where uid=B;stmt.executeUpdate(sqlText);mit();/事务提交事务提交out.println(转帐成功!转帐成功!);elseconn.rollback();/事务回滚事务回滚 out.println(转帐失败!转帐失败!);finally.计算机科学与工程学院计算机科学与工程学院8.2 并发控制概述并发控制概述1、什么是事务的并发执行?T1T2T3T1T2T3(a a)事务的串行执行)事务的串行执行(b b)事务的并发执行(单处理机)事务的并发执行(单处理机)计算机科学与工程学院计算机科学与工程学院8.2 并发控制概述(续)并发控制概述(续)2、并发事
9、务带来的不一致性问题丢失修改丢失修改丢失更新问题是由丢失更新问题是由于两个事务对同一于两个事务对同一数据并发写入所引数据并发写入所引起的起的 计算机科学与工程学院计算机科学与工程学院8.2 并发控制概述(续)并发控制概述(续)2、并发事务带来的不一致性问题不可重复读不可重复读事务事务T1T1和和T2T2并发并发执行,产生读值执行,产生读值不可复现的情况不可复现的情况 计算机科学与工程学院计算机科学与工程学院8.2 并发控制概述(续)并发控制概述(续)2、并发事务带来的不一致性问题读脏数据读脏数据读脏数据问题是读脏数据问题是由于一个事务读由于一个事务读另一个更新事务另一个更新事务尚未提交的数据尚
10、未提交的数据所引起的所引起的 计算机科学与工程学院计算机科学与工程学院8.2 并发控制概述(续)并发控制概述(续)并发控制的任务就是避免访问冲突所引起的数据不一致。数据库管理系统一般都提供并发控制机制,即采用对资源加锁的方法控制用户并发操作。计算机科学与工程学院计算机科学与工程学院8.2 并发控制概述(续)并发控制概述(续)3、封锁的概念事事务务T在在对对某某个个数数据据对对象象,如如表表、记记录录等等操操作作之之前前,需需要要向向系系统统发发出出请请求求,对对其其加加锁锁。加加锁锁后后事事务务T对对该该数数据据对对象象有有了了一一定定的的控控制制,在在事事务务T释释放放它它的的锁锁之之前前,
11、其其他他的的事事务务不不能能更更新新此数据对象。此数据对象。计算机科学与工程学院计算机科学与工程学院8.2 并发控制概述(续)并发控制概述(续)3、封锁的概念基本的封锁类型:基本的封锁类型:写写锁锁(排排它它锁锁,即即X锁锁):若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直至T释放A上的锁,保证了其他事务在T释放A上的锁之前不能再读取和修改A。读读锁锁(共共享享锁锁,即即S锁锁):若事务T对数据对象A加上S锁,则事务T可以读A,但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁,保证了其他事务可以读A,但是不能对A进行任
12、何修改。计算机科学与工程学院计算机科学与工程学院8.2 并发控制概述(续)并发控制概述(续)计算机科学与工程学院计算机科学与工程学院8.2 并发控制概述(续)并发控制概述(续)T1Xlock(x)read(x)x:=x+1write(x)commitunlock(x)T2申请申请Xlock(x)等待等待等待等待等待等待等待等待等待等待Xlock(x)read(x)x:=x+1write(x)commitunlock(x)封锁机制解决封锁机制解决“丢失修改丢失修改”问题问题计算机科学与工程学院计算机科学与工程学院8.2 并发控制概述(续)并发控制概述(续)6、活锁多多个个事事务务并并发发执执行行
13、时时,某某个个事事务务有有可可能能永永远远处于等待状态,形成了活锁的情形。处于等待状态,形成了活锁的情形。活锁的解决方式活锁的解决方式先来先服务计算机科学与工程学院计算机科学与工程学院8.2 并发控制概述(续)并发控制概述(续)7、死锁一一个个事事务务如如果果申申请请锁锁而而未未获获准准,则则需需等等待待其其他他事事务务释释放放锁锁,这这就就形形成成了了事事务务间间的的等等待待关关系系。当当事事务务之之间间出出现现循循环环等等待待时时,如如果果不不加加干预则会一直等待下去,即出现死锁。干预则会一直等待下去,即出现死锁。计算机科学与工程学院计算机科学与工程学院8.2 并发控制概述(续)并发控制概
14、述(续)8、死锁的预防一次封锁法一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就等待。缺点:扩大了封锁范围,降低了系统的并发度 难以预测所有需要封锁的对象计算机科学与工程学院计算机科学与工程学院8.2 并发控制概述(续)并发控制概述(续)8、死锁的预防顺序封锁法顺序封锁法预先对数据对象规定一个封锁顺序,所有事务都按这个顺序进行封锁。缺点:维护封锁顺序非常困难 难以按规定去执行计算机科学与工程学院计算机科学与工程学院8.2 并发控制概述(续)并发控制概述(续)9、死锁的诊断与解除诊断:诊断:(1)超时法:如果一个事务的等待时间超过了规定的时限,则认为发生了死锁。(2)等待图法:有
15、向图中如果存在回路,则表示出现了死锁。解除:解除:选择一个处理死锁代价最小的事务,释放该事务占有的资源计算机科学与工程学院计算机科学与工程学院8.2 并发控制概述(续)并发控制概述(续)10、可串行性化调度定定义义:多多个个事事务务的的并并发发执执行行是是正正确确的的,当当且且仅仅当当其其结结果果与与按按某某一一次次序序串串行行地地执执行行这这些些事事务务时时的的结结果果相相同同,称称这这种种调调度度为为可可串串行行化化的的调度。调度。可串行性是评价并发调度正确性的准则。可串行性是评价并发调度正确性的准则。计算机科学与工程学院计算机科学与工程学院8.2 并发控制概述(续)并发控制概述(续)举例
16、:举例:有两个事务,分别包含下列操作(假定A、B的初值均为2)事务T:读B;A=B+1;写回A;事务T2:读A;B=A+1;写回B;两个事务串行的结果:T1-T2 结果1:A=3,B=4T2-T1 结果2:A=4,B=3计算机科学与工程学院计算机科学与工程学院8.2 并发控制概述(续)并发控制概述(续)T1Slock(B)Read(B):B=2Unlock(B)Xlock(A)A=B+1=3Write(A)commitunlock(A)T2Slock(A)Read(A):A=2Unlock(A)Xlock(B)B=A+1=3Write(B)commitunlock(B)是否为正确的调是否为正确
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 系统 概论 第八
限制150内