欢迎来到天天文库
浏览记录
ID:57061751
大小:744.50 KB
页数:98页
时间:2020-07-30
《《数据库系统概论》第5版原版授课-第10章课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据库系统概论AnIntroductiontoDatabaseSystem第十章数据库恢复技术郑州大学软件学院第十章数据库恢复技术10.1事务的基本概念10.2数据库恢复概述10.3故障的种类10.4恢复的实现技术10.5恢复策略10.6具有检查点的恢复技术10.7数据库镜像10.8小结10.1事务的基本概念1.事务2.事务的ACID特性1.事务事务(Transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。事务和程序是两个概念在关系数据库中,一个事务可以是一
2、条SQL语句,一组SQL语句或整个程序一个程序通常包含多个事务事务是恢复和并发控制的基本单位定义事务显式定义方式BEGINTRANSACTIONBEGINTRANSACTIONSQL语句1SQL语句1SQL语句2SQL语句2。。。。。。。。。。COMMITROLLBACK隐式方式当用户没有显式地定义事务时,数据库管理系统按缺省规定自动划分事务事务异常终止事务运行的过程中发生了故障,不能继续执行系统将事务中对数据库的所有已完成的操作全部撤销事务滚回到开始时的状态事务正常结束提交事务的所有操作(读+更新)事务中所有对
3、数据库的更新写回到磁盘上的物理数据库中事务结束COMMIT事务正常结束提交事务的所有操作(读+更新)事务中所有对数据库的更新写回到磁盘上的物理数据库中ROLLBACK事务异常终止事务运行的过程中发生了故障,不能继续执行系统将事务中对数据库的所有已完成的操作全部撤销事务滚回到开始时的状态10.1事务的基本概念1.事务2.事务的ACID特性2.事务的特性(ACID特性)事务的ACID特性:原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持续性(Durability)(1)原子性
4、事务是数据库的逻辑工作单位事务中包括的诸操作要么都做,要么都不做(2)一致性事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态一致性状态数据库中只包含成功事务提交的结果不一致状态数据库系统运行中发生故障,有些事务尚未完成就被迫中断;这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态一致性与原子性银行转帐:从帐号A中取出一万元,存入帐号B。定义一个事务,该事务包括两个操作这两个操作要么全做,要么全不做全做或者全不做,数据库都处于一致性状态。如果只做一个操作,用户
5、逻辑上就会发生错误,少了一万元,数据库就处于不一致性状态。B=B+1A=A-1BA(3)隔离性一个事务的执行不能被其他事务干扰一个事务内部的操作及使用的数据对其他并发事务是隔离的并发执行的各个事务之间不能互相干扰(4)持续性持续性也称永久性(Permanence)一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。事务的特性保证事务ACID特性是事务处理的任务破坏事务ACID特性的因素(1)多个事务并行运行时,不同事务的操作交叉执行数据库管理系统必须保证多
6、个事务的交叉运行不影响这些事务的隔离性(2)事务在运行过程中被强行停止数据库管理系统必须保证被强行终止的事务对数据库和其他事务没有任何影响第十章数据库恢复技术10.1事务的基本概念10.2数据库恢复概述10.3故障的种类10.4恢复的实现技术10.5恢复策略10.6具有检查点的恢复技术10.7数据库镜像10.8小结10.2数据库恢复概述故障是不可避免的计算机硬件故障软件的错误操作员的失误恶意的破坏故障的影响运行事务非正常中断,影响数据库中数据的正确性破坏数据库,全部或部分丢失数据数据库恢复概述(续)数据库的恢复数
7、据库管理系统必须具有把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态)的功能,这就是数据库的恢复管理系统对故障的对策恢复子系统是数据库管理系统的一个重要组成部分恢复技术是衡量系统优劣的重要指标第十章数据库恢复技术10.1事务的基本概念10.2数据库恢复概述10.3故障的种类10.4恢复的实现技术10.5恢复策略10.6具有检查点的恢复技术10.7数据库镜像10.8小结故障的种类1.事务内部的故障2.系统故障3.介质故障4.计算机病毒1.事务内部的故障事务内部的故障有的是可以通过事务程序本身发现
8、的(见下面转账事务的例子)有的是非预期的,不能由事务程序处理的。事务内部的故障(续)例如,银行转账事务,这个事务把一笔金额从一个账户甲转给另一个账户乙。BEGINTRANSACTION读账户甲的余额BALANCE;BALANCE=BALANCE-AMOUNT;/*AMOUNT为转账金额*/IF(BALANCE<0)THEN{打印‘金额不足,不能转账’;/*事务内部可能造成
此文档下载收益归作者所有