数据库第五版王珊
2021-03-23 15:46:45 1 举报
AI智能生成
以王珊的数据库为教材的,可作为期末考试,考研复试使用
作者其他创作
大纲/内容
第一章 绪论
数据库系统DBS
数据库DB
数据库管理系统DBMS
核心
DBS的核心是DBMS
DBMS的核心是DB/数据
DB的核心是数据模型
常见DBMS(关系型)
Oracle(甲骨文)
DB2 (IBM)
SQL Server(微软)
MySQL
Access
数据库发展
(数据管理技术发展)
(数据管理技术发展)
人工管理阶段
数据不保存(可通过人工保存)
应用程序管理数据(在人工管理阶段时期,没有管理数据的软件系统,应用程序不仅要管理数据的逻辑结构,还要设计其物理结构、存取方法等)
数据不共享(数据是面向应用程序的,多个应用程序使用相同的数据时必须重新定义,进而导致数据冗余)
数据不具有独立性(数据的逻辑结构或物理结构发生变化后,必须对应用程序做相应的修改)
文件系统阶段
数据无结构
数据可长期保存(在使用时由外存调入到内存)
通过文件系统管理数据
数据共享性差,冗余度高(在文件系统中,一个(或一组)文件基本上对应于一个应用程序,即文件仍然是面向应用的。)
独立性差
数据库系统阶段
数据结构化
数据的共享性高,冗余度低,易扩充
数据独立性高
逻辑独立性
物理独立性
数据由DBMS统一管理和控制
数据模型
组成
数据结构
数据操作
完整性约束条件
分类
概念模型
基本概念
实体:客观存在并可相互区别
码:唯一标识实体的属性集
联系
实体内部(组成实体各属性之间的联系)
实体之间:不同实体集之间的联系
属性
域
表示方法
E-R图
三要素
实体 矩形框
属性 椭圆
联系 菱形
子主题
逻辑模型:
层次
要求
1. 有且仅有一个结点没有双亲节点(根节点)
2. 根以外的结点只有一个双亲节点
只能处理 1:n,任何记录只有按照路径查看才能显示全部意义
n:n:分解为1:n
冗余节点法
虚拟节点法
完整性约束
无相应双亲就不能插入子女节点
双亲删除,子女删除
更新,所有相应记录都要更新
存储
邻接法(层次树的前序遍历)物理空间位置相邻
链接法
优缺点
优点
适合表达1:n
查询效率高于关系模型,不低于网状模型
良好的完整性支持
网状:能表示m:n
要求
1.一个以上节点无双亲结点
2.一个结点多于一个双亲结点
特点
层次模型是网状模型特例
m:n:分解为1:n
存储结构
单向/双向/环状/向首链表
优缺点
优点
性能较好,存储效率高;直观描述现实世界
缺点
DDL,DML复杂
结构复杂
应用程序访问数据要选择恰当的路径
关系
概念
二维表
数据结构
关系
元组
属性
主码
域
完整性约束
实体完整性
参照完整性
用户自定义完整性
优缺点
优点
严格的数学概念基础
存储路径对用户透明
缺点
存储路径透明,导致查询效率往往不高
为提高性能,需做查询优化,增加开发DBMS难度
面向对象:(继承:子类继承父类(超类)所有属性和方法)
物理模型
应用:三世界两化
数据库的系统结构
系统模式的概念
三级模式结构
模式
数据库中全体数据的逻辑结构和特征的描述
所有用户的公共数据视图,综合了所有用户的需求
一个数据库只有一个模式
地位
与数据的物理存储细节和硬件环境无关
与具体的应用程序、开发工具及高级程序设计语言无
外模式
数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结
构和特征的描述
构和特征的描述
数据库用户的数据视图,是与某一应用有关的数据的逻辑表示
模式:外模式:1:n
用途
保证数据库安全性的一个有力措施
每个用户只能看见和访问所对应的外模式中的数据
内模式
数据物理结构和存储方式的描述
数据在数据库内部的表示方式
一个数据库只有一个内模式
二级映象功能与数据独立性
二级映象在DBMS内部实现这三个抽象层次的联系和转换
外模式/模式映象
保证数据的逻辑独立性
当模式改变时,数据库管理员修改有关的外模式/模式映象,使外模
式保持不变
式保持不变
应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证
了数据与程序的逻辑独立性,简称数据的逻辑独立性
了数据与程序的逻辑独立性,简称数据的逻辑独立性
模式/内模式映象
数据库中模式/内模式映象是唯一的
保证数据的物理独立性
第二章 关系数据库基本理论
关系模型
关系数据结构
二维表
候选码(Candidate Key)
关系中的一个属性组,其值能唯一标识一个元组。若从属性组中去掉任何
一个属性,它就不具有这一性质了,这样的属性组称作候选码
一个属性,它就不具有这一性质了,这样的属性组称作候选码
主码(Primary Key)
若一个关系有多个候选码,则选定其中一个作为主码
外码(Foreign Key)
关系模式
关系的描述称作关系模式,
某一时刻对应某个关系模式的内容(元组的集合)称作关系
关系数据库
其型是关系模式的集合,即数据库描述,称作数据库的内涵
(Intension),或关系数据库模式
(Intension),或关系数据库模式
其值是某一时刻关系的集合,称作数据库的外延(Extension),
或关系数据库
或关系数据库
关系操作
传统集合运算:并∪、交∩、差 - 、笛卡尔积×
并∪
两个关系R和S若进行并运算,则它们必须是相容的
属性数目相同
第 i 个属性域相同
差 -
R S必须相容
交∩
可以用差运算来重写
关系运算:选择、投影、连接、除
选择
选择的是元组
投影
取若干列(结果中要去掉相同的行)
连接
θ连接
σ(Ra θ Rb)(RxS)
自然连接
从两个关系的广义笛卡尔积中选取在相同属性列B上取值相等的元组,
并去掉重复的列。
并去掉重复的列。
自然连接中相等的分量必须是相同的属性组,并且要在结果中去掉重复的属性,而
等值连接则不必。
等值连接则不必。
R和S无相同属性时,R自然连接S = RXS
外连接
左外连接
右外连接
除
R÷S = ΠX(R)- ΠX(ΠX(R) x ΠY(S) - R)
5种基本运算:选择、投影、并、差、笛卡尔积
广义笛卡尔积 x
两个关系R,S,其度分别为n,m,笛卡尔积为:元组的前n个分量是R中的一个元组,
后m个分量是S中的一个元组
后m个分量是S中的一个元组
RxS的度为R与S的度之和, RxS的元组个数为R和S的元组
个数的乘积
个数的乘积
关系完整性
实体完整性
约束对象:主码
约束条件:唯一且不得为空
约束体现:Primary Key
违约处理:拒绝执行
参照完整性(引用完整性)可以为空
约束对象:外码
约束条件
可为空
若不为空,须等于关联表已有的属性
约束体现:Foreign Key
违约处理
拒绝执行(默认)
级联操作
设置为空
用户自定义完整性
约束对象:任意属性
约束条件:任意
约束体现:Check,not null,unique(唯一但可为空)
违约处理:拒绝执行
E-R图转为关系模式
若联系R为1:1联系,则每个相关实体的码均可作为关系的候选码
若联系R为1:N联系,则关系的码为N端实体的码
若联系R为M:N联系,则关系的码为相关实体码的集合。
有时,联系本身的一些属性也必须是结果关系的码属性。
有时,联系本身的一些属性也必须是结果关系的码属性。
第三章 SQL 结构化查询语言
SQL概述
修改列的属性的数据类型
alter table Student alter column Sage int
数据定义
索引
顺序文件上的索引
B+索引
散列索引(hash)
位图索引
数据字典
数据查询
带有ANY和ALL的查询
>ANY
大于查询结果中的某个值
>ALL
大于子查询结果中的所有值
!= (或 <>)ANY
不等于子查询结果中的某个值
!= (或 <>)ALL
不等于子查询结果中的任何一个值(等价于 NOT IN)
聚集函数遇到空值时,除了COUNT(*)之外,都跳过空值而只处理非空值
某个元组的一个或者部分列为空值不影响count的统计结果
where字句中不能有聚合函数
嵌套查询
子查询select语句不能使用order by,order by 只能对最终结果排序
子查询
相关子查询
不相关子查询
内层查询需要反复求值
exists
子查询不返回任何数据,只产生逻辑真假
相关子查询
集合查询
并 union
交 intersect
差 except
基于派生表的查询
插入
插入子查询结果
删除
数据更新
空值的处理
空值的判断
IS NULL,IS NOT NULL
空值的约束条件
NOT NULL
UNIQUE
加了该限制的属性不能去空值,码属性不能取空值
视图
with check option
对视图进行增删改查时要满足视图定义中子查询谓词条件
作用
简化用户操作
用户能从多种角度看待同一数据
对重构数据库提供了一定程度的逻辑独立性
对机密数据提高安全保护
适当的使用视图能够更清晰的表达查询
第四章 数据库的安全性
数据库安全性概述
数据库安全技术
用户身份验证
多层存取控制
概念
方法
定义用户权限
合法权限检查
常用存取控制方法
自主存取控制DAC ,C2级
强制存取控制MAC,B1级
审计
系统自动建立审计日志,将用户对数据库的所有操作记录在上面
分类
用户级审计
系统级审计
语句
AUDIT语句:设置审计功能
NOAUDIT语句:取消审计功能
对修改SC表结构或修改SC表数据的操作进行审计
AUDIT ALTER,UPDATE
ON SC;
AUDIT ALTER,UPDATE
ON SC;
视图
视图能够把要保密的数据对无权存取这些数据的用户隐藏起来,因此对数
据提供一定程度的安全保护
据提供一定程度的安全保护
子主题
数据加密等
存储加密、传输加密
自主存取控制技术
用户权限组成要素 : 数据对象、操作类型
例子
把查询Student表和修改学生学号的权限授给用户U4<br>GRANT UPDATE(Sno), SELECT<br>ON TABLE Student TO U4;
把用户U4修改学生学号的权限收回
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4
把对Student表和Course表的全部权限授予用户U2和U3
GRANT ALL PRIVILIGES
ON TABLE Student, Course
TO U2, U3;
GRANT ALL PRIVILIGES
ON TABLE Student, Course
TO U2, U3;
步骤1:创建角色R1
CREATE ROLE R1;
步骤2:给R1授权
GRANT SELECT,UPDATE,INSERT
ON TABLE Student TO R1;
步骤3:将R1授权给多个用户
GRANT R1 TO 王平,张明,赵玲;
步骤4:一次性通过R1来回收多个权限
REVOKE R1 FROM 王平;
CREATE ROLE R1;
步骤2:给R1授权
GRANT SELECT,UPDATE,INSERT
ON TABLE Student TO R1;
步骤3:将R1授权给多个用户
GRANT R1 TO 王平,张明,赵玲;
步骤4:一次性通过R1来回收多个权限
REVOKE R1 FROM 王平;
GRANT INSERT ON TABLE SC TO U5
WITH GRANT OPTION;
WITH GRANT OPTION;
缺点:无意泄露
这种机制仅仅通过对数据的存取权限来进行安全控制,
而数据本身并无安全性标记
而数据本身并无安全性标记
强制存取控制机制:解决上面的无意泄露问题
敏感度标记(Label)
绝密(Top Secret)> 机密(Secret)> 可信(Confidential)> 公开(Public)
主体敏感度:许可证级别
客体敏感度(数据):密级
规则 向下读,向上写
1) 仅当主体的许可证级别大于或等于
客体的密级时,该主体才能读取相应的
客体
客体的密级时,该主体才能读取相应的
客体
2) 仅当主体的许可证级别小于或等于
客体的密级时,该主体才能写相应的客
体
客体的密级时,该主体才能写相应的客
体
实现MAC时要首先实现DAC,先进行DAC检查,通过DAC检查
的数据对象再由系统进行MAC检
查,只有通过MAC检查的数据对
象方可存取
的数据对象再由系统进行MAC检
查,只有通过MAC检查的数据对
象方可存取
第十章 并发控制
并发控制
并发操作产生的问题
丢失修改
飞机订票事务
不可重复读
一事务读取后,另一事条对之进行了修改
一事务读取数据后,另一并发事务删去了其中部分数据,某些记录意外消失了
幻觉,换行
一事务读取数据后,另一事务插入了一些新数据(多了)。
(幻行现象)
(幻行现象)
读脏数据
基于封锁的并发控制
类型
排它锁 X:X锁一般用于写保护,可防止丢失更新
共享锁 S:一般用于读操作,一旦施加S锁,读可共享,但其它事务不可改
申请时机
针对事务执行确定一个时间点整体申请
针对一条SQL语句申请
开销大,并发度高
申请方式
显式
应事务的要求直接加到数据对象上
隐式
封锁协议
1 级封锁协议
事务T在修改数据D之前须先对其加X锁,直到事务T结束(commit/rollback)才释放
防丢失更改
2 级封锁协议
在1级基础上,再加上S锁,读完后释放
防丢失修改,防读脏
3 级封锁协议
在 1 级基础上,再加上S,直到事务结束才释放该锁
三防
并发调度的可串行性
正确性标准
单个事务
多个事务
可串行化调度
可串行化调度是并发事务正确性的唯一准则
冲突可串行化调度
可串行化调度的充分而非必要条件
前趋图
n个事务的可串行化调度结果——n!种
两段锁协议
两个阶段
扩展阶段
收缩阶段
定理:若所有事务都遵守2PL协议,则对这些事务的所有并发调度策略都
是可串行化的。
是可串行化的。
封锁的粒度
多粒度封锁
锁的粒度
封锁对象的大小
逻辑单元
物理单元
数据页(块)、索引页
封锁策略
多个关系的大量元组时宜采用数据库级粒度
单个关系大量元组时宜采用关系级
单个关系少量元组时宜采用元组级
一般不采用属性级
一般不采用物理单元
冲突检测
检查数据对象本身有无显式封锁与申请冲突;
检查上级结点有无封锁与本结点冲突;
检查后代结点有无封锁与本结点冲突
开销大,解决方法,意向锁
意向锁
类型
IS
表示某个子孙结点拟加S锁
IX
表示某个子孙结点拟加X锁
SIX
表示对结点施加S锁的同时,再施加IX锁 = S+IX
活锁和死锁
活锁
避免方法:先来先服务
死锁
预防
一次封锁法
要求每个事务将要使用的数据一次性全部加锁,否则不能继续执行
顺序封锁法
预先对封锁对象规定一个封锁顺序,所有事务按照这个顺序实施封锁
诊断和解除死锁(普遍采用)
超时法
等待图法
发现有死锁,选择一个城里死锁代价最小的事务,将其撤销,释放词此事务所持有的所有锁
第五章 保证数据完整性的方法
用户自定义完整性
NOT NULL
列值唯一UNIQUE
波尔表达式CHECK
完整性约束命名
CONSTRAINT
例子
ALTER TABLE Student DROP CONSTRAINT C1
;
ALTER TABLE Student ADD CONSTRAINT C1
CHECK(Sno BETWEEN 900000 AND 999999);
ALTER TABLE Student DROP CONSTRAINT C3;
ALTER TABLE Student ADD CONSTRAINT C3
CHECK (Sage < 40)
;
ALTER TABLE Student ADD CONSTRAINT C1
CHECK(Sno BETWEEN 900000 AND 999999);
ALTER TABLE Student DROP CONSTRAINT C3;
ALTER TABLE Student ADD CONSTRAINT C3
CHECK (Sage < 40)
实体完整性
参照完整性(引用完整性)
违约处理
拒绝执行 NO ACTION
级联操作 CASCADE
设置为空值
触发器
定义触发器
触发事件
触发时机
before,after
类型
行级 for each row
语句级 for each statement
激活触发器
删除触发器
DROP TRIGGER <触发器名> ON <表名>;
第六章 关系的规范化
为什么进行规范
冗余度大
修改异常
删除异常
插入异常
函数依赖
平凡函数依赖
若X→Y,且Y⊆X,则称X→Y为平凡函数依赖
非平凡函数依赖
部分函数依赖:X→Y,且存在X的一个真子集也能决定Y
完全函数依赖:X→Y,且不存在X的一个真子集也能决定Y
传递函数依赖:X→Y→Z
有关码的术语
单属性码
多属性码
全码
码为全部属性
超码
包含一个码的属性组
主属性
包含在任何一个码中的属性
非主属性
不包含在任何一个码中的属性
1NF,2NF,3NF,BCNF
1NF:最基本要求,数据项不可再分
2NF:消除非主属性对码的部分函数依赖(非主属性对码都是完全函数依赖)(2NF是完全函数依赖的关系)
3NF:消除非主属性对码的传递函数依赖(没有非主属性的关系一定满足3NF)
BCNF:(若关系为二元关系,一定满足BCNF)
消除主属性,非主属性对码的部分和传递函数依赖
多值依赖和4NF
多值依赖定义
平凡多值依赖
●若Z=φ, 则称X→→Y为平凡多值依赖;
非平凡多值依赖
●若Z≠φ ,则称X→ +Y为非平凡多值依赖。
多值依赖的对称性
对称性:如果X->→Y,则X→→∪-X-Y。
多值依赖和函数依赖的区别
①若X→Y,则X→→Y;反之,则不-定成立。( 函数依赖是多值依赖的-个特例)
②设XY⊆W⊆U ,若X→Y在W上成立,则X→Y在U上也成立; ( 与范围无关);若X-→-→Y在W上成立, X-→-→Y在U上则不一定成立。( 与范围有关)
③设Y'为Y的真子集,若X→Y,则X-→Y';若X→→Y,则X→→Y'不一定成立。
4NF
Armstrong公理系统
逻辑蕴含和闭包
逻辑蕴含
闭包
Armstrong公理系统
自反律
若YcX,则X→Y
增广律
若X→Y,则XZ→YZ
传递律
若X→Y,则XZ→YZ
推论
合成规则
若X→Y, X→Z ,则X→YZ
分解规则
若X→YZ,则X→Y,X→Z
伪传递规则
若X→Y,YW→Z,则X→Z
Armstrong公理是有效的,完备的
有效性
由F出发根据Armstrong公理推导出来的每一个函数依赖一 定在F+中。
完备性
F+中的每一个函数依赖,必定可以由F出发根据Armstrong公理推导出来。
属性闭包
XF+={A | X→A能由F根据Armstrong公理推导出}
属性闭包和码
判断码
求所有候选码
从未在右边出现的{X}
左右都出现的{Y}
最小函数依赖
函数依赖集的等价
方法
对于F中的每个函数依赖X→Y ,求XG+,若有Y⊆XG+,则说明F⊆G+
对于G中的每个函数依赖X→Y
最小函数依赖集
条件
①F中每个函数依赖的右部都是单属性;
②对于F中的任一函数依赖X→A, F- {X→A}与F是不等价的; ( 没有多余的依赖)
③对于F中的任一函数依赖X →A ,不存在X的真子集Z ,使得F与(F- {X→A})U{Z→A}等价。( 左部不存在多余属性)
求解算法
最小函数依赖集不是唯一的
模式分解概述
模式分解
U=U1∪U2U...Un
U;与U可以相交,但不允许U;∈Uj ( 1≤i,j≤n)
Fi是F在Ui上的投影
函数依赖的投影
定义
计算方法
令F;= φ ;
依次取Ui的每个真子集X,求XF+,令Fi= Fi∪{X→(XF+∩Ui)} ;
求Fi的最小函数依赖集Fim ;
输出Fim
分解的正确性标准
无损连接性
依赖保持性
模式分解正确性验证
无损连接性
两个关系的验证
(U1∩U2)- >(U1-U2)∈F+ 或(U1∩U2) >(U2- U1)∈F+
通用算法
依赖保持性
模式分解算法
3NF分解
3NF分解1
具有依赖保持性
3NF分解2
依赖保持性,无损连接性
BCNF分解
第七章 数据库的设计
概念结构设计
设计方法
自顶向下
自底向上
逐步扩张
混合策略
消除冲突
属性冲突
属性域冲突
属性取值单位冲突
命名冲突
同名异义
异名同义
结构冲突
同一对象在不同应用中有不同的抽象
同一实体在不同应用中属性组成不同
同一联系在不同应用中呈现不同的类型
方法
新奥尔良:
运用软件工程的思想和方法进行数据库设计
基于E-R模型
3NF
基于视图
首先为每个应用建立视图,再将这些视图合并为全局概念模式
阶段
需求分析 工具:数据流程图和数据字典 数据字典包括
数据项
数据结构
数据流
数据存储
数据处理
作用
概念结构设计(E-R模型)
E-R图
实体
实体型
实体值
属性
E-R模型中仅考虑原子属性
联系
设计原则
凡能作为属性对待的,尽量作为属性
若为实体
该实体具有除码以外的其他属性
该实体是某一个 1:n或 m:n联系的“多”端
逻辑结构设计(E-R图转成关系模式,第三范式设计方法,依赖于DBMS)
E-R图向关系模型的转换
实体的转换
联系的转换
关系的属性
关系的码
1:1
两端实体的码都是候选码
1:n
多端实体的码
m:n
至少包含两端实体的码的并集
存在一端的多元联系
除了一端以外的其他实体的码的并集
不存在一端的多元联系
至少包含所有相关实体码的并集
关系的外码
数据模型的优化
对关系可进行垂直分解和水平分解,提高操作效率和存储空间利用率
水平分解
将关系中的元组分解为若干个子集
垂直分解
将关系模式的属性分解为若干个子集
设计用户子模式
注重局部用户的要求
方法
不同级别用户定义不同的视图
复杂查询语句定义为视图
使用用户更习惯的别名,计量单位
物理结构设计阶段(存储结构和存取方法)常用存取方法
设计存取方法
索引
B+索引
使用范围:等值查询,范围查询,聚集函数计算,排序,遍历
Hash
适用于
等值查询,等值连接
不适用
范围查询,排序,模糊
聚簇(cluster)
单表聚簇
将单个表的数据按聚簇码分组有序的存储
最常用于等值比较的属性,且该属性上的重复取值较多
多表聚簇
将多个表的数据按照聚簇码集中的存储在一起
经常进行连接操作的表可以建立聚簇
设计原则
设计存储方案
确定数据存放位置
空间效率有要求,研所存储
安全要求:加密
确定系统配置参数
最大连接数
内存配置参数
.......
数据库实施:建立数据库,装入原始数据,测试(尽可能找出更多错误)
数据库运行维护(维护周期最长)
第八章 查询处理和查询优化
查询优化
代数优化:先做选择,少做连接,不做笛卡尔积
步骤
查询分析
查询检查
数据字典
查询优化
代数优化
物理优化
查询执行
关系数据库系统的查询处理
代数优化
对关系表达式的等价变换来提高查询效率
笛卡尔积,自然连接,并,交的交换律和结合律
与选择有关的转换规则
基于规则
基于代价 代价估算,选择最小的
两者结合
优化规则
选择尽早做
选择运算和笛卡尔积运算相结合成为一个连接运算
查询树优化
物理优化
为候选关系代数表达式选择合适的操作算法或路径
基于规则
选择操作的启发式规则
小关系
无论是否有索引,全表扫描
大关系
主码值上的等值连接,主码索引
非主码等值查询
选择比例<10% 优先索引,否则全表扫描
非等值查询或范围查询
选择比例 < 10% 优先索引,否则全表扫描
选择条件为合取,有索引,优先索引
自然连接操作的启发式规则
基于代价
索引扫描算法估算公式
值==码
采用该表上的主索引,若为B+树,层数为L ,cost=L+1
选择条件非码
若为B+树cost = L+S(有S个元组满足条件)
>,< >=
假设有一半元组满足条件,则要存取一半的叶节点,通过索引访问一半的表存储块 cost = L + Y/2 + B/2
嵌套循环连接算法
cost = Br+BrBs/(K-1)+ (Frs*Nr*Ns)/Mrs
排序-合并
cost = Br+BrBs/(K-1)+ (Frs*Nr*Ns)/Mrs
若需对大文件排序
(2*B)+(2*B*log2B)
若需对大文件排序
(2*B)+(2*B*log2B)
第九章
数据库恢复
故障
事务故障
事务死锁
undo
表现形式
应用处理异常(在线抢购)
应用处理异常
断网,应用程序被意外杀死,应用程序端电脑死机,断电
系统异常
事务超时,死锁,活锁等
系统故障
无需用户参与
关机重启
某些类型的硬件故障
CPU/内存/主板,不涉及外存储设备(具有持久化保存能力的存储介质)
系统软件故障
死机,蓝屏,意外重启等
系统操作失误
系统异常断电
介质故障
需要用户参与
有备份导入,无备份重做
磁盘故障
外界干扰
子主题
计算机病毒
是程序/代码,不是错误的程序或代码
最重要的两大特性
破坏性
传染性
解决办法
杀毒软件
手动清除
重装系统、格式化
故障的解决办法(备份,利用冗余数据)
数据转储(后备副本)
静态转储
无运行的事务
动态转储
必须配合日志文件
日志文件
先写日志文件,后更新数据库
系统故障恢复和事务故障恢复都必须使用日志文件
日志写入顺序必须与事务执行时间次序一致
日志文件中检查点记录用于提高故障恢复效率
事务四个特性
原子性 A
事务是一个原子操作,不可再分,全做或全不做
一致性 C
一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败。
隔离性 I
一个事务执行不被其他事务干扰,可能有许多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。
持续性 D
事务一旦提交,对数据库的改变是永久性的。接下来的其他操作或者故障不应该对其执行结果产生影响
具有检查点的故障恢复技术
产生原因
大量的日志扫描和恢复操作成本大
检查点机制
生成时机
时间周期
日志记录周期
两个增加
在日志中增加检查点记录
建立检查点时刻所有正在执行(active)事务清单
上述事务最早一条日志记录的地址
增设重新开始文件
记录各个检查点记录在日志文件中的地址
检查点动作
保存数据库状态,建立检查点。
使用检查点的恢复技术
1)从重新开始文件中找到最后一个检查点的信息,并从日志文件中找到该
检查点记录;
检查点记录;
2)从检查点记录中得到ACTIVE-TRANSACTION-LIST,
3)从检查点开始正向扫描日志文件,新开始的事务并入UNDO-LIST,遇到
事务提交的日志记录,则该事务从UNDO-LIST移入REDO-LIST,直到日志
文件尾;
事务提交的日志记录,则该事务从UNDO-LIST移入REDO-LIST,直到日志
文件尾;
4)以检查点记载的最早日志记录和日志文件末尾为界,分别对日志记录中
属于UNDO队列和REDO队列的内容执行UNDO和REDO操作。
属于UNDO队列和REDO队列的内容执行UNDO和REDO操作。
0 条评论
下一页