华南理工大学《数据库》(研究生)复习提纲2

时间:2022-11-21 22:09:43 作者:壹号 字数:11642字

故障类型分为一下三种:

1.事务失败:包括逻辑错误(一个事务由于其内部错误,导致不能正常结束如是不内部的死循环)和系统错误(系统进入一个不良如死锁等状态,导致事务无法执行,但该事务在以后的某个时间是可以重新执行的); 2.系统崩溃:如电源问题、其他软硬件引起的系统停机,导致缓存、内存等易失存储设备数据丢失,但是非易失存储设备数据一般不会丢失;

3.硬盘故障:人为或是自然灾害等因素造成的硬盘损害导致数据的丢失。 故障恢复策略:

事务故障和系统故障的恢复方法是:撤销故障发生时未完成事务对DB的所有影响,确保事务的原子性,重做已经成功提交的事务,实现事务的持久性,以上操作一般是由系统在重启时自动完成,不需要用户干预。

灾难性或磁盘失败恢复策略:使用归档存储设备(通常是磁带)上的数据库备份进行恢复,并从备份日志重新应用或者重做已经提交的事务的操作来重构故障钱数据库的最新状态。

缓存目录:跟踪哪些数据项在缓冲区中。

脏位(dirty bit ):每个缓冲区都和一个脏位相关联,它用来指示该缓冲区是否有所修改。 钉住拔去位(pin-unpin bit):即如果缓冲中的页目前还不能写回到磁盘,则称该页被钉住( 该位的值为1)。

X所在的缓冲块Bx上的操作output(Bx)不需要在write(X)执行后立即执行,因为块Bx可能包含其他仍在被访问的数据项

原位更新(in-place update):将缓冲区写回磁盘原来的位置,因而会覆盖被修改的数据项在磁盘上的旧值(必须使用日志帮助);

镜像更新(Shadow update):将缓冲区写到磁盘不同的位置,可以保存数据项的多个版本; 非潜入(no-steal):缓存中被事务更新的某个页在事务提交前不能写回磁盘; 潜入(steal):允许事务在提交前将已经更新的缓冲区写回磁盘; 强制(force):事务所有的已经更新的页在事务提交时被立即写回磁盘; 非强制制(no-force):无事所有做的更新的页在事务提交时不立即写回磁盘。

延迟更新(NO-UNDO/REDO 算法):所有事务的更新都记录在局部事务的工作区(或缓存区),只有在事务到达提交点后才真正更新磁盘上的数据库。

即时更新:事务的某些操作达到提交点前被写入数据库,恢复时需要UNDO/REDO,如果事务在达到提交点前所有的更新已被写入数据库,需要算法UNDO/NO-REDO

WAL是一个日志协议规则,明确定义了先写日志的思想,内容如下:

1. 先写日志,无论是在缓冲区还是在磁盘等上面都这样子,这是保证原子性的关键;

2. 在事务提交前写相关的所有日志记录到稳定存储介质,这是保证持久性的关键,确保我们能基于日志重建提交事务。

一种日志是把写操作记录下来;另外一种日志形式中,把更新的东西取为一个物理块,则一 个日志记录包含了三部分前像、后像、事务状态

检查点是为了在系统恢复过程中不要每次撤销和重做事务时从日志文件首条开始而在日志文件中增加的检查点标志记录,使得系统恢复过程中的撤销和重做事务都只是从最近的一个检查地点开始做,可大量减小,降低恢复所需的时间和工作量,分为静态检查点(建立检查点时不允许执行事

务)和动态检查点。

ARIES( Algorithm for Recovery andIsolation Exploiting Semantics )日志的恢复管理算法综述 1.采用基于潜入/非强制的公职模式;

2.使用日志顺序号LSN标志日志记录,在数据库页中用LSN标志哪些更新已经在数据库页上实施过;

3.使用脏页表最大程度减少恢复时不必要的重做;

4.使用模糊点检查点机制,只记录脏页信息和关联的信息,甚至不要求将脏页写到磁盘; 5.当系统崩溃会重启时,恢复管理器将被激活,并按以下三个阶段进行处理:

a.分析:鉴别系统崩溃时,缓冲区中的脏页和当时仍在活跃的事务;

b.重做:重做从日志适当起点(比如被修改的最早脏页表对应的日志记录)开始的所有动作,恢复系统到崩溃时的DB状态;

…… 此处隐藏2136字 ……

归档重做日志文件,重做日志文件都是用于非一致性回复过程中撤销和重做各种事务; 一致性备份只能在数据库关闭的时候做;

可以根据数据库是否打开,是否是归档模式来判断究竟用哪种备份方式。

系统调优的最终目标:是应用运行的更快;缩短查询、事务的响应时间;提高事务的整体吞吐量 查询优化就是在众多的查询方案中选择出最高效率的执行计划的一种处理过程,包括代数优化和物理优化。

代数优化:通过对关系代数表达式的等价变化来提高查询效率,代数优化仅改变查询语句中操作的次序和组合,不涉及底层的存取路径;

物理优化:通过选择高效合理的操作算法或是存取路径,求得优化的查询计划。

选择操作:简单的全表扫描方法、索引(或散列)扫描方法

连接操作方法:嵌套循环方法(nested loop)、排序-合并方法(sort-merge join 或merge join)、索引