数据库概-复习总结(4)

数据库概-复习总结(4),第1张

数据库概-复习总结(4) 事务

一个数据库 *** 作序列 ; 一个不可分割的工作单位; 恢复和并发控制的基本单位ACID

原子性 Atomicity一致性 Consistency

一致性状态: 数据库中只包含成功事务提交的结果 独立性 Isolation

并发执行的各个事务之间不能互相干扰 持久性 Durability

一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。 故障

事务内部故障系统故障

恢复策略:强行撤消(UNDO)所有未完成事务。重做(REDO)所有已提交的事务 介质故障

恢复策略:装入数据库发生介质故障前某个时刻的数据副本。重做自此时始的所有成功事务,将这些事务已提交的结果重新记入数据库 计算机病毒 恢复

恢复 *** 作的基本原理:冗余建立冗余:

数据转储 backup

静态转储 与 动态转储(动态:允许转储时 *** 作,后援副本 + 日志)海量转储与增量转储 登录日志文件 logging

以以日志记录为单位:

内容包括:事务开始标记、事务结束标记、更新 *** 作。日志记录:事务标识、 *** 作类型、 *** 作对象、更新前的旧值、更新后的新值登记日志的两条原则:登记的顺序严格按照事务执行的时间次序。 必须先写日志文件,后写数据库 以数据块为单位:

内容:事务标识、被更新的数据块 恢复策略

事务内部故障:

反向扫描日志,查找该事务的更新 *** 作对该事务的更新 *** 作执行逆 *** 作,将日志记录中更新前的值写入数据库反复执行,直到遇到开始标记 系统故障:

Undo故障时未完成的事务Redo故障时已完成的事务:正向扫描日志文件,建立Undo队列和Redo队列反向扫描日志文件,对每个UNDO事务的更新 *** 作执行逆 *** 作(更新前的值 写入数据库)正向扫描日志文件,对每个REDO事务重新执行登记的 *** 作(更新后的值 写入数据库) 介质故障

重装数据库重做已完成的事务 具有检查点的恢复技术

解决 (改善恢复效率)

搜索整个日志将耗费大量的时间REDO处理:重新执行,浪费了大量时间 重新开始文件储存检查点记录在日志中的地址检查点:

建立检查点时刻所有正在执行的事务清单这些事务最近一个日志记录的地址 恢复子系统在登录日志文件期间动态地维护日志:周期性地建立检查点,保存数据库状态

    将当前日志缓冲区中的所有日志记录写入磁盘上的日志文件中在日志文件中写入一个检查点记录将当前数据缓冲区中的所有数据记录写入磁盘的数据库中把检查点记录在日志中的地址写入一个重新开始文件
恢复时:

检查点之前提交 无需Redo检查点之后提交 Redo故障之前未提交的 Undo 步骤:

从重新开始文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录由该检查点记录得到检查点建立时刻所有正在执行的事务清单ACTIVE-LIST。建立两个事务队列UNDO-LIST、REDO-LIST把ACTIVE-LIST暂时放入UNDO-LIST队列,REDO队列暂为空。从检查点开始正向扫描日志文件,直到日志文件结束

如有新开始的事务Ti,把Ti暂时放入UNDO-LIST队列如有提交的事务Tj,把Tj从UNDO-LIST队列移到REDO-LIST队列 对UNDO-LIST中的每个事务执行UNDO *** 作,对REDO-LIST中的每个事务执行REDO *** 作。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5703612.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存