《数据库管理》PPT课件 (2).ppt_第1页
《数据库管理》PPT课件 (2).ppt_第2页
《数据库管理》PPT课件 (2).ppt_第3页
《数据库管理》PPT课件 (2).ppt_第4页
《数据库管理》PPT课件 (2).ppt_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DataBase 魏英 tutor_ 7952616 第七章 数据库管理 教学内容 理解事务的概念及其处理模型 熟悉数据库系统中并发控制的基本方法 理解数据库故障恢复策略 掌握数据库完整性约束和安全性控制的实现方法 教学重点 事务处理模型 加锁协议 完整性约束 教学难点 并发操作 DataBase 魏英 tutor_ 7952616 事务 定义 事务(Transaction)是DBMS的执行单位,由有限 的数据库操作序列组成 例:银行转账业务 账号姓名余额 A张三800 B李四400 UPDATE 账户 SET 余额=余额-100 WHERE 账号=A UPDATE 账户 SET 余额=余额+100 WHERE 账号=B 700 500400 事务 DataBase 魏英 tutor_ 7952616 事务 性质1:原子性(Atomicity) Nothing or All:不允许事务部分完成 COMMIT语句:提交该事务对数据库的所有修改,使 其成为数据库中永久的一个部分,表示一个事务成功 地结束 ROLLBACK语句:撤销该事务对数据库的所有修改, 将事务回滚到事务的起点,即全部不执行事务的操作 序列 由DBMS的事务管理子系统实现 DataBase 魏英 tutor_ 7952616 事务 性质2:一致性(Consistency) 事务对数据库的作用应使数据库从一个一致状态转变 到另一个一致状态 数据库的一致状态是指数据库中的数据满足完整性约 束,即数据的完整性约束不会因事务的执行而被破坏 例如,银行转账业务的完整性约束条件为转账前后账 号A与B的余额之和相等 账号姓名余额 A张三800 B李四400 账号姓名余额 A张三700 B李四400 账号姓名余额 A张三700 B李四500 DataBase 魏英 tutor_ 7952616 事务 性质3:隔离性(Isolation) 如果多个事务并发执行,应像各个事务独立执行一样 ,互不干扰 由DBMS的并发控制子系统实现 /*事务T1*/ UPDATE 账户 SET 余额=余额 -100 WHERE 账号=A UPDATE 账户 SET 余额=余额 +100 WHERE 账号=B /*事务T2*/ DECLARE S INT,SA INT,SB INT SELECT SA=余额 FROM 账户 WHERE 账号=A SELECT SB=余额 FROM 账户 WHERE 账号=B SET S=SA+SB 执 行 的 时 间 顺 序 /*事务T1*/ UPDATE 账户 SET 余额=余额 -100 WHERE 账号=A UPDATE 账户 SET 余额=余额 +100 WHERE 账号=B /*事务T2*/ DECLARE S INT,SA INT,SB INT SELECT SA=余额 FROM 账户 WHERE 账号=A SELECT SB=余额 FROM 账户 WHERE 账号=B SET S=SA+SB DataBase 魏英 tutor_ 7952616 事务 性质4:持久性(Durability) 一个事务成功执行后,对数据库的影响应是永久的, 即使是数据库因故障被破坏,DBMS也应该能够恢复 由DBMS的事务管理子系统和恢复管理子系统配合实 现 DataBase 魏英 tutor_ 7952616 事务处理模型 ANSI/ISO SQL事务模型 规定用户或程序始终处于事务处理状态,用户或程序 执行的第一个SQL语句是一个事务的开始,当遇到以 下四种情况之一时,该事务将结束 执行COMMIT语句,当前事务成功结束,立即开始一个新事 务 执行ROLLBACK语句,当前事务异常结束,立即开始一个 新事务 对于SQL程序而言,程序正常结束表示当前事务也结束了 ,无新事务开始 对于SQL程序而言,程序异常结束表示当前事务也结束了 ,无新事务开始 DataBase 魏英 tutor_ 7952616 事务处理模型 SQL SERVER的事务处理模型 在编写程序时,应把事务用事务开始语句和结束语句 加以限定 BEGIN TRANSACTION语句表示一个事务的开始 COMMIT TRANSACTION语句表示一个事务的成功结 束,但不能自动开始一个新事务 可通过SAVE TRANSACTION语句在事务中间建立一 个保存点(Savepoint) 通过ROLLBACK TRANSACTION语句可以该事务所 有的更新操作,回滚到事务寝状态(如果设有保存点 ,将只放弃保存点之后的更新操作,回滚到保存点的 状态) DataBase 魏英 tutor_ 7952616 事务状态变迁图 活动状态 读/写 局部提交 状态 提交状态 失败状态 异常中止 状态 事务开始执行后, 立即进入活动状态 在活动状态,事务将执行对数据库的读/写操作 ,但写操作的结果并不立即写到磁盘,可能暂 存在缓冲区中 事务的最后一个语句执行之后,进入 局部提交状态,事务并未真正结束, 对数据库的修改可能还在缓冲区中 处于活动状态的事 务没有达到最后一 个语句就中止执行 ,将进入失败状态 处于局部提交状态的事务遇到故障也 进入失败状态 处于失败状态的事务可能已对磁盘中 的数据进行了一部分修改,为保证事 务的原子性,事务将进入异常中止状 态,由DBMS的恢复子系统决定重新启 动事务或取消事务 事务进入局部提交状态后,DBMS的并发控制子 系统将检查该事务与并发事务是否发生干扰现 象,通过检查后,系统执行提交操作,把对数 据库的修改全部写到磁盘上,并通知系统,事 务成功结束,事务进入提交状态 DataBase 魏英 tutor_ 7952616 SQL SERVER事务处理实例 事务处理后 数据库状态 事务处理前 数据库状态 BEGIN TRANSACTION INSERT DELETE SAVE TRANSACTION A UPDATE DELETE SAVE TRANSACTION B UPDATE INSERT ROLLBACK B 保存点A UPDATE DELETE COMMIT TRANSACTION 保存点B DataBase 魏英 tutor_ 7952616 并发操作 串行访问 事务顺序执行,一个事务完全结束后,另一个事务才 开始 并发访问 DBMS同时接纳多个事务的执行方式 交叉并发:在单CPU系统中,同一时间只能有一个事 务占有CPU,各个事务交叉使用CPU 同时并发:在多CPU系统中,可以允许多个事务同时 占有CPU DataBase 魏英 tutor_ 7952616 并发操作 优点 提高系统资源的利用率和吞吐率 改善短事务的响应时间 缺点 多个事务并发地存取同一数据,可能会破坏数据库的 完整性,产生数据不一致问题 DataBase 魏英 tutor_ 7952616 并发操作引起的问题 问题1:丢失更新(Lost Update) 例:在一个多用户订单系统中,甲、乙两个业务员并 发地从产品表中存取41004号产品的库存数量(假设 该产品的初始库存数量为139) 时间事务T1(甲) 库存 数量 事务T2(乙) t0 DECLARE X INT SELECT X=库存数量 FROM 产品 WHERE 产品号=41004 139 t1 DECLARE Y INT SELECT Y=库存数量 FROM 产品 WHERE 产品号=41004 t2SET X=X-100 t3SET Y=Y-125 t4 UPDATE 产品 SET 库存数量 =X WHERE 产品号=41004 39 t514 UPDATE 产品 SET 库存数量 =Y WHERE 产品号=41004 t6 SELECT X=库存数量 FROM 产品 WHERE 产品号=41004 写写冲突 DataBase 魏英 tutor_ 7952616 并发操作引起的问题 问题2:读脏数据(Dirty Read) 时间事务T1(甲) 库存 数量 事务T2(乙) t0 DECLARE X INT SELECT X=库存数量 FROM 产品 WHERE 产品号=41004 139 t1SET X=X-100 t2 UPDATE 产品 SET 库存数量 =X WHERE 产品号=41004 39 t3 DECLARE Y INT SELECT Y=库存数量 FROM 产品 WHERE 产品号=41004 t4SET Y=Y-125 t5ROLLBACK TRANSACTION139 t6 SELECT X=库存数量 FROM 产品 WHERE 产品号=41004 脏数据 在数据库技术中 ,将未提交随后 又撤销的数据称 为脏数据 读写冲突 DataBase 魏英 tutor_ 7952616 并发操作引起的问题 问题3:不可重复读(Unrepeatable Read) 时间事务T1(甲) 库存 数量 事务T2(乙) t0139 SELECT 库存数量 FROM 产品 WHERE 产品号=41004 t1 UPDATE 产品 SET 库存数量= 库存数量-100 WHERE 产品号 =41004 39 t2 SELECT 库存数量 FROM 产品 WHERE 产品号=41004 读写冲突 DataBase 魏英 tutor_ 7952616 并发操作引起的问题 总结 并发操作所引起问题的根源来自对同一数据对象的写 写冲突或读写冲突 问题的关键在写操作上,只读事务的并发操作不会产 生上述问题 DBMS的并发控制子系统用于解决上述问题 并发控制的基本方法是封锁 DataBase 魏英 tutor_ 7952616 封锁技术 锁(Lock) 一个与数据项相关的变量,对可能应用于该数据项上 的操作而言,锁描述了该数据项的状态 通常在数据库中,每个数据项都有一个锁 锁的作用 使并发事务对数据库中数据项的访问能够同步 锁的基本用法 在操作之前先对数据项加锁,以防止用户读取正由其 他用户更改的数据项或多个用户同时更改相同的数据 项 DataBase 魏英 tutor_ 7952616 封锁技术 排它锁(X锁,eXclusive lock) 如果事务T对某个数据R实现了X锁,则在T对数据R解 除封锁之前,不允许其他事务再对该数据加任何类型 的锁 X锁有加锁和解锁两种操作 如果事务T获得数据R上的X锁,则T既可读又可写R X锁用于INSERT、DELETE或UPDATE等数据修改操 作 DataBase 魏英 tutor_ 7952616 封锁技术 共享锁(S锁,Shared lock) 如果事务T对某数据加上S锁后,仍允许其他事务再 对该数据加S锁,但在对该数据的所有S锁都解除之 前,决不允许任何事务对该数据加X锁 S锁有加锁、解锁和升级三种操作 如果事务T获得数据R上的S锁,则T可读但不可写R S锁用于SELECT等非更新数据的操作 DataBase 魏英 tutor_ 7952616 封锁技术 封锁类型的相容矩阵 无锁S锁X锁 S锁YYN X锁YNN 其他事务拥有的锁 加锁 请求 Y相容的请求,N不相容的请求 DataBase 魏英 tutor_ 7952616 封锁协议 一级封锁协议 事务T在修改数据R之前必须先对其加X锁,直到事务 结束才释放 事务结束包括正常结束(COMMIT)和非正常结束 (ROLLBACK) 一级封锁协议可防止丢失更新,并保证事务T是可恢 复的 在一级封锁协议中,如果仅仅是读数据不对其进行修 改,是不需要加锁的,所以它不能保证可重复读和不 读脏数据 DataBase 魏英 tutor_ 7952616 封锁协议 T1T2 读A16 读A16 AA1 写回A15 AA1 写回A15 T1T2 XLOCK A 获得 读A16 XLOCK A AA1等待 写回A15等待 COMMIT等待 UNLOCK A等待 获得XLOCK A 读A15 AA1 写回A14 COMMIT UNLOCK A 没有丢失更新 DataBase 魏英 tutor_ 7952616 T1T2 XLOCK C 获得 读C100 CC2 写回C200 读C200 ROLLBACK UNLOCK C 读脏数据 DataBase 魏英 tutor_ 7952616 T1T2 读A50 读B100 求和150 XLOCK B 获得 读B100 BB2 写回B200 COMMIT UNLOCK B 读A50 读B200 求和250 COMMIT 不可重复读 DataBase 魏英 tutor_ 7952616 封锁协议 二级封锁协议 一级封锁协议加上事务T在读取数据R之前必须先对 其加S锁,读完后即可释放S锁 二级封锁协议除防止丢失更新外,还可进一步防止读 脏数据 在二级封锁协议中,由于读完数据后即可释放S锁, 所以它不能保证可重复读 DataBase 魏英 tutor_ 7952616 T1T2 XLOCK C 获得 读C100 CC2 写回C200 SLOCK C ROLLBACK等待 UNLOCK C等待 获得SLOCK C 读C100 COMMIT UNLOCK C不读脏数据 DataBase 魏英 tutor_ 7952616 T1T2 SLOCK A,B 获 得 读A50,B100 UNLOCK A,B 求和150 XLOCK B 获得 读B100 BB2 写回B200 COMMIT,UNLOCK B SLOCK A,B 获 得 读A50,B200 UNLOCK A,B 求和250 不可重复读 DataBase 魏英 tutor_ 7952616 封锁协议 三级封锁协议 一级封锁协议加上事务T在读取数据R之前必须先对 其加S锁,直到事务结束释放 三级封锁协议除了防止丢失更新和不读脏数据外,还 进一步防止了不可重复读 DataBase 魏英 tutor_ 7952616 T1T2 SLOCK A,B 获 得 读A50,B100 求和150 XLOCK B 等待 读A50,B100等待 求和150等待 COMMIT等待 UNLOCK A,B等待 获得XLOCK B 读B100 BB2 写回B200 COMMIT,UNLOCK B 可重复读 DataBase 魏英 tutor_ 7952616 封锁协议 上述三种封锁协议的主要区别在于什么操作需要 申请封锁,以及何时释放锁(即持锁时间) X锁S锁一致性保证 操作结 束释放 事务结 束释放 操作结 束释放 事务结 束释放 不丢失 更新 不读脏 数据 可重复 读 一级封 锁协议 二级封 锁协议 三级封 锁协议 DataBase 魏英 tutor_ 7952616 封锁带来的问题 问题1:活锁问题 系统可能使某个事务永远处于等待状态,得不到封锁 的机会,这种现象称为活锁(Live Lock) T1T2T3T4 LOCK R . . . UNLOCK R LOCK R 等待 等待 等待 等待 等待 等待 等待 LOCK R 等待 LOCK R UNLOCK R LOCK R 等待 等待 等待 LOCK R . . . DataBase 魏英 tutor_ 7952616 封锁带来的问题 问题1:活锁问题 避免活锁的一种简单方法是采用先来先服务 (FCFS,First Come First Serve)的策略,即 当多个事务请求同一数据对象时,封锁子系统按请求 的先后次序对事务排队,数据对象上的锁一旦释放就 批准申请队列中的第1个事务获得锁 如果事务有优先级,对于优先级低的事务,即使排队 也很难轮上封锁机会,此时可采用升级方法解决,即 当一个事务等待若干时间后,如果还轮不上封锁,就 提高其优先级 DataBase 魏英 tutor_ 7952616 封锁带来的问题 问题2:死锁问题 系统中有两个或两个以上事务都处于等待状态,并且 每个事务都在等待其中另一个事务解除封锁,它才能 继续执行下去,结果造成任何一个事务都无法继续执 行,这种现象称系统进入了死锁(Dead Lock)状态 T1T2 LOCK R1 获得 LOCK R2 获得 LOCK R2 等待LOCK R1 等待等待 DataBase 魏英 tutor_ 7952616 封锁带来的问题 预防死锁 方法一:一次性封锁法 每个事务必须一次将所有要使用的数据全部加锁,否则就 不能继续执行 缺点1:扩大封锁范围,降低系统并发度 缺点2:很难事先精确确定每个事务需要封锁的数据对象 方法二:顺序封锁法 预先对数据对象规定一个封锁顺序,所有事务都按照这个 顺序实行封锁 缺点1:数据库系统中封锁的数据对象极多且在不断变化, 维护这些资源的封锁顺序非常困难 缺点2:很难事先精确确定每个事务需要封锁的数据对象, 也就很难按规定顺序施加封锁 DataBase 魏英 tutor_ 7952616 封锁带来的问题 预防死锁 方法三:一种实用的方法 当事务申请锁未获批准时,不等待加锁而是让一些事务回 滚重新执行,从而避免事务间的循环等待,进而避免死锁 DataBase 魏英 tutor_ 7952616 封锁带来的问题 死锁的检测与解除 方法一:超时法 如果一个事务的等待时间超过了规定的时限,就认为发生了死锁 缺点1:可能误判 缺点2:如果时限设置过长,将无法及时发现死锁 方法二:等待图法 并发控制子系统周期性检测事务等待图,如果发现图中存在回路,则 表示系统中出现了死锁 一旦DBMS的并发控制子系统检测到死锁,通常采用的解除方 法为选择一个处理代价最小的事务,将其撤销,释放该事务 持有的所有锁,使其他事务可以继续运行下去 DataBase 魏英 tutor_ 7952616 并发调度 事务的执行次序称为调度(Schedule) 如果多个事务依次执行,则称为事务的串行调度 (Serial Schedule) 如果利用分时的方法,同时处理多个事务,则称 为事务的并发调度(Concurrent Schedule) 事务的串行调度的结果都是正确的,至于按什么 次序执行,则视外界环境而定,系统无法预料 事务的并发调度有的是正确的,有的则不正确 DataBase 魏英 tutor_ 7952616 可串行化 每个事务中,语句的先后顺序在各种调度中始终 保持一致,在此前提下,如果一个并发调度的执 行结果与某一串行调度的执行结果等价,则认为 这个并发调度是正确调度,称为可串行化的调度 T1T2 SLOCK B Y=B(=2) UNLOCK B XLOCK A AY1 写回A(=3) UNLOCK A SLOCK A X=A(=3) UNLOCK A XLOCK B B=X+1 写回B(=4) UNLOCK B T1T2 SLOCK A X=A(=2) UNLOCK A XLOCK B B=X+1 写回B(=3) UNLOCK B SLOCK B Y=B(=3) UNLOCK B XLOCK A AY1 写回A(=4) UNLOCK A T1T2 SLOCK B Y=B(=2) SLOCK A X=A(=2) UNLOCK B UNLOCK A XLOCK A AY1 写回A(=3) XLOCK B B=X+1 写回B(=3) UNLOCK A UNLOCK B T1T2 SLOCK B Y=B(=2) UNLOCK B XLOCK A SLOCK A AY1 写回A(=3) UNLOCK A X=A(=3) UNLOCK A XLOCK B B=X+1 写回B(=4) UNLOCK B DataBase 魏英 tutor_ 7952616 两段锁协议 所谓两段锁协议(2PL,Two-Phase Locking) 是指所有事务必须分两个阶段对数据项进行加锁 和解锁 增长阶段:事务可以获得锁,但不能释放锁(在对任 何数据进行读写操作之前,首先要申请并获得对该数 据的封锁) 缩减阶段:事务可以释放锁,但不能获得新锁(在释 放一个封锁后,事务不再申请和获得任何其他锁) T1T2 SLOCK B Y=B(=2) XLOCK A SLOCK A AY1 写回A(=3) UNLOCK B UNLOCK A X=A(=3) XLOCK B B=X+1 写回B(=4) UNLOCK B UNLOCK A T1T2 SLOCK B Y=B(=2) UNLOCK B XLOCK A SLOCK A AY1 写回A(=3) UNLOCK A X=A(=3) UNLOCK A XLOCK B B=X+1 写回B(=4) UNLOCK B DataBase 魏英 tutor_ 7952616 两段锁协议 事务遵守两段锁协议 是可串行化调度的充 分条件,而不是必要 条件 一次封锁法遵守两段 锁协议,但两段锁协 议并不要求一次将所 有要使用的数据全部 加锁,因此遵守两段 锁协议的事务可能发 生死锁 T1T2 SLOCK B Y=B(=2) SLOCK A X=A(=2) XLOCK A 等待XLOCK B 等待等待 DataBase 魏英 tutor_ 7952616 封锁的粒度 封锁对象的大小称为封锁的粒度(Granularity) 封锁的对象可以是数据库、表、行、列等逻辑单元,也 可以是页、块等物理单元 封锁粒度与系统的并发度和并发控制的开销密切相关 封锁粒度越大,封锁对象就越少,并发度就越小,系统开销 也越小 封锁粒度越小,封锁对象就越多,并发度就越大,系统开销 也越大 现代大型数据库一般都支持多粒度封锁,允许一个事务 锁定不同类型的资源 DataBase 魏英 tutor_ 7952616 数据库的恢复 如果数据库中只包含成功事务提交的结果,则数据库处 于一致状态(或正确状态,完整状态) 如果数据库在运行中发生故障,使一些事务尚未完成就 被迫中断,它们对数据库的修改有一部分已写入物理数 据库,则称数据库处于不一致状态 将数据库从某种故障状态恢复到正确状态的处理过程称 为数据库恢复 数据库故障分类 事务故障 系统故障 介质故障 计算机病毒 数据库本身未被破坏 数据库本身被破坏 DataBase 魏英 tutor_ 7952616 数据库的恢复 基本原理:冗余 利用后备副本将数据库恢复到转储时的一致状态,利 用运行记录(事务日志)将数据库恢复到故障前事务 成功提交时的一致状态 恢复机制的两个关键问题 如何建立冗余数据 如何利用冗余数据实施数据库恢复 DataBase 魏英 tutor_ 7952616 数据库的恢复 数据备份(转储,Backup) 所谓转储是指DBA定期将整个数据库复制到磁带或另 一个磁盘上保存起来的过程 这些备份的数据文件称为后备副本或后援副本 转储方式 按转储的数据量分为海量转储和增量转储 按系统运行状态分为静态转储和动态转储 转储状态 动态静态 转储 方式 海量动态海量转储静态海量转 储 增量动态增量转储静态增量转 储 DataBase 魏英 tutor_ 7952616 数据库的恢复 事务日志 在事务运行过程中,DBMS将事务的每一个更新操作 登记在日志文件中 日志文件的内容 事务的开始标记(BEGIN TRANSACTION) 事务的结束状态(COMMIT或ROLLBACK) 事务的更新操作(更新的数据对象,前像,后像) 登记日志文件的原则 登记的次序严格按并发事务执行的时间次序 必须先写日志文件,后写数据库 DataBase 魏英 tutor_ 7952616 数据库的恢复 例7.5:银行转账事务的日志文件P184 BEGIN TRANSACTION UPDATE 账户 SET 余额=余额-100 WHERE 账号 =A UPDATE 账户 SET 余额=余额+100 WHERE 账号 =B COMMIT 步 骤 操作 1BEGIN TRANSACTION 2READ(A,V) 3V=V-100 4WRITE(A,V) 5READ(B,V) 6V=V+100 7WRITE(B,V) 8COMMIT 日志记录 DataBase 魏英 tutor_ 7952616 数据库的恢复 日志文件的作用 事务故障和系统故障的恢复必须使用日志文件 在动态转储方式中必须建立日志文件,后备副本和日 志文件综合起来才能有效地恢复数据库 在静态转储方式中,也可以建立日志文件,提高故障 恢复效率 事务日志一般不能和数据库放在同一磁盘上,以 免在磁盘损坏时,两者同时丢失。如果二者不得 不放在同一磁盘上,则应经常备份事务日志 DataBase 魏英 tutor_ 7952616 数据库的恢复 事务故障的恢复 故障原因:事务在运行到正常终止点前被终止 恢复策略:利用日志文件撤销此事务对数据库进行的 修改 恢复步骤 反向扫描日志文件,查找该事务的更新操作 对该事务的更新操作执行逆操作 继续反向扫描,查找该事务其它的更新操作,并做同样处 理,直到读到该事务的开始标记,事务故障就恢复完成了 事务故障的恢复是由系统自动完成的,对用户透明 步 骤 操作 1BEGIN TRANSACTION 2READ(A,V) 3V=V-100 4WRITE(A,V) 5READ(B,V) 6V=V+100 7WRITE(B,V) 8COMMIT 日志记录 DataBase 魏英 tutor_ 7952616 数据库的恢复 系统故障的恢复 故障原因 未完成事务对数据库的更新可能已写入数据库 已提交事务对数据库的更新可能还留在缓冲区没来得及写入数据库 恢复策略:撤销故障发生时未完成的事务,重做已完成的事 务 恢复步骤 正向扫描日志文件,找出故障发生前已经提交的事务,将其事务标识 记入重做(REDO)队列,同时找出故障发生时尚未完成的事务,将其事 务标识记入撤销(UNDO)队列 反向扫描日志文件,对撤销队列中的每个事务的更新操作执行逆操作 正向扫描日志文件,对重做队列中的每个事务重新执行日志文件登记 的操作 系统故障的恢复是由系统在重新启动时自动完成的,不需要 用户干预 步 骤 操作 1BEGIN TRANSACTION 2READ(A,V) 3V=V-100 4WRITE(A,V) 5READ(B,V) 6V=V+100 7WRITE(B,V) 8COMMIT 日志记录 DataBase 魏英 tutor_ 7952616 数据库的恢复 介质故障的恢复 故障原因:磁盘上的物理数据库和日志文件被破坏 恢复策略:重装数据库,然后重做已完成的事务 恢复步骤 装入最新的数据库后备副本 对于动态转储的数据库副本,还需装入转储开始时刻的日 志文件副本,利用恢复系统故障的方法,将数据库恢复到 一致性状态 装入转储结束时刻的日志文件副本,重做已完成的事务 介质故障的恢复需要DBA介入 DataBase 魏英 tutor_ 7952616 数据库的恢复 正常运行 TaTb 静态转储运行事务 Tf 故障发生点 登记日志文件 介质故障恢复 重装后备副本 利用日志文件恢复事务 继续运行 登记日志文件 DataBase 魏英 tutor_ 7952616 数据库的恢复 检查点(Checkpoint,CP) 利用日志技术进行恢复时,必须要搜索日志文件以确 定REDO事务和UNDO事务,但搜索整个日志文件比较 费时,且许多REDO事务已将结果写入数据库,再重 做较费时 为减少REDO工作量,在事务运行过程中,DBMS周期 性在事务日志中设置检查点 恢复策略 时间 T1 T2 T3 T4 T5 检查点系统崩溃 DataBase 魏英 tutor_ 7952616 完整性约束 数据库的完整性 正确性 有效性 相容性 关系数据模型的完整性约束规则 域完整性约束:对属性值有效性的约束,可在CREATE TABLE语句通过NOT NULL, DEFAULT, UNIQUE和CHECK 子句实现 实体完整性约束:主码非空,可在CREATE TABLE语句通过 PRIMARY KEY子句实现 参照完整性约束:外码为另一个关系中主码的有效值或空值 ,可在CREATE TABLE语句通过FOREIGN KEY子句实现 用户自定义完

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论