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