数据库期末复习总结之优化与恢复(四)
数据库设计
数据库设计分以下六个阶段:
(1)需求分析:了解与分析用户需求,最后生成数据字典。
(2)概念结构设计:构建一个概念模型(E-R图)。
(3)逻辑结构设计:转换为数据模型(关系模式)并进行优化。
(4)物理结构设计:选取一个适合应用环境的物理结构(包括存储结构和存取方法)。
(5)数据库实施:建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
(6)数据库运行和维护
合成E-R图之间的冲突主要为:属性冲突、命名冲突、结构冲突。
关系查询处理和查询优化
查询处理步骤:
1. 选择操作的实现
- 全表扫描方法
- 索引(或散列)扫描方法
选择操作的启发式规则(物理优化)
2. 连接操作的实现
- 嵌套循环方法
- 排序-合并方法
- 索引连接方法
- Hash Join方法
连接操作的启发式规则(物理优化)
代数优化
原则:
1. 选择运算应尽可能先做
目的:减小中间关系
2. 投影运算和选择运算同时做
目的:避免重复扫描关系
3. 把投影运算与其前面或后面的双目运算结合
目的:减少扫描关系的遍数
例题. 对学生一课程数据库有如下的查询:SEIECT Cname FROM Student , Course , SC WHERE Student . Sno = SC . Sno AND SC . Cno = Course.Cno AND Student . Sdept = 'IS' ;
此查询要求信息系学生选修了的所有课程名称。试画出用关系代数表示的语法树,并用关系代数表达式优化算法对原始的语法树进行优化处理,画出优化后的标准语法树。
数据库恢复技术
数据库的恢复是指数据库管理系统具有将数据库从错误状态恢复到某一已知的正确状态(也称一致状态或完整状态)的功能。
事务
- 定义:事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。
- 理解:事务是恢复和并发控制的基本单位。事务也是数据库应用程序的基本逻辑单元。
- 与程序的区别: 在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序; 一个应用程序通常包含多个事务。
- SQL定义:
BEGIN TRANSACTION SQL语句1 SQL语句2 …COMMIT
指事务正常提交。BEGIN TRANSACTION SQL语句1 SQL语句2 …ROLLBACK
指事务出错,撤销所有操作。 - 特性:
(1)原子性(包括的诸操作要么都做,要么都不做。)
(2)一致性(事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。)
(3)隔离性(一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰)
(4)持续性(也称永久性一个事务一旦提交,它对数据库中数据的改变就应该是永久性的)
故障种类
- 事务内部故障
指某个事务在运行过程中由于种种原因未运行至正常终止点就夭折了。
解决:可以通过程序本身发现的。 - 系统故障(软故障)
造成系统停止运转的任何事件,使得系统要重新启动。例如:突然停电、操作系统故障等等。
解决:强行撤消(UNDO)所有未完成事务;重做(Redo)所有已提交的事务。 - 介质故障*(硬故障)
指外存故障,如磁盘损坏、磁头碰撞,瞬时强磁场干扰等。
解决:装入数据库发生介质故障前某个时刻的数据副本,重做自此时开始的所有成功事务。 - 计算机病毒
数据库恢复
恢复操作的基本原理:冗余
1. 建立冗余数据
数据转储
- 静态转储
- 动态转储
- 海量转储
- 增量转储
登录日志文件
- 日志文件是用来记录事务对数据库的更新操作的文件。
- 每条日志记录的内容:
事务标识;
操作类型(插入、删除或修改);
操作对象(记录ID、Block NO.);
更新前数据的旧值(对插入操作而言,此项为空值);
更新后数据的新值(对删除操作而言,此项为空值)。 - 日志作用:
进行事务故障恢复
进行系统故障恢复
协助后备副本进行介质故障恢复 - 登记日志文件的原则
登记的次序严格按并行事务执行的时间次序;
必须先写日志文件,后写数据库。
2.恢复策略(利用冗余数据实施数据库恢复)
- 事务故障恢复
恢复由系统在重新启动时自动完成,不需要用户干预具体步骤如下: - 系统故障恢复
恢复由系统在重新启动时自动完成,不需要用户干预具体步骤如下: - 介质故障恢复
介质故障的恢复需要DBA介入,恢复操作由系统自动完成,具体步骤如下:
具有检查点的恢复技术
- 建立检查点
其实就是在日志文件中增加一类新的记录—–检查点记录,并增加一个重新开始文件,让恢复子系统在登录日志文件期间动态地维护日志。 - 检查点记录内容
建立检查点时刻所有正在执行的事务清单
这些事务最近一个日志记录的地址 - 重新开始文件的内容
记录各个检查点记录在日志文件中的地址 - 在检查点 维护日志文件的步骤:
(1)将当前日志缓冲区中的所有日志记录写入磁盘的日志文件上。
(2)在日志文件中写入一个检查点记录。
(3)将当前数据缓冲区的所有数据记录写入磁盘的数据库中。
(4)把检查点记录在日志文件中的地址写入一个重新开始文件。 - 利用检查点的恢复策略
当事务T在一个检查点之前提交T对数据库所做的修改已写入数据库,在进行恢复处理时,没有必要对事务T执行REDO操作。例如图中的T1事务。
注:T2是从检查点位置开始重做,不是到事务起点时刻;T3是撤销到检查点时刻,不是到事务起点时刻; - 利用检查点的恢复步骤
注:先建立UNDO队列,然后看是否有COMMIT记录,若有就放入REDO队列。
数据库镜像
DBMS自动把整个数据库或其中的关键数据复制到另一个磁盘上。
相当于另一个完全一样的数据库。