微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

【数据库复习 13】

第十三章 恢复系统

1.故障分类
(1)事务故障
·逻辑错误:事务由于某些内部条件而无法继续正常执行,这样的内部条件如非法输入、找不到数据、溢出或超出资源限制。
·系统错误:系统进入一种不良状态(如死锁)。
(2)事务崩溃:硬件故障,或者是数据库软件或操作系统的漏洞,导致易失性存储器内容的丢失,并使得事务处理停止。
(3)磁盘故障:在数据传送操作过程中由于磁头损坏或故障造成磁盘块上的内容丢失。
2.存储器:
·易失性存储器
·非易失性存储器
·稳定存储器
*数据库分成称为块的定长存储单位。块是磁盘数据传送的单位。
3.数据访问:
(1)位于磁盘上的块称为物理块,临时位于主存的块称为缓冲块。用于临时存放块的区域被称为磁盘缓冲区。
(2)

Alt


Alt


4.恢复与原子性
(1)日志记录

Alt


(2)如果一个事务直到它提交时都没有修改数据库,我们就说它采用了延迟修改技术。如果数据库修改事务在活跃时发生,即为立即修改
·undo使用一个日志记录,将该日志记录中指明的数据项设置为旧值。
·redo使用一个日志记录,将该日志记录中指明的数据项设置为新值。
(3)当一个事务的commit日志记录输出到稳定存储器后,我们就说这个事务提交了。
(4)使用日志来重做或者撤销事务

Alt

(5)发生系统崩溃之后,系统查阅日志以确定为保证原子性需要对哪些事务进行重做,对哪些事务进行撤销。

Alt


(6)检查点:
目的:降低搜索日志记录的消耗
特点:
·在执行检查点操作的过程中不允许执行任何更新
·在执行检查点的过程中将所有的更新过的缓冲块都输出到磁盘
执行过程如下:
#1 将当前位于主存的所有日志记录输出到稳定存储器
#2 将所有修改的缓冲块输出到磁盘
#3 将一个日志记录输出到稳定存储器,其中L是执行检查点时正在活跃的事务的列表

Alt


eg.

Alt

*模糊检查点(在缓冲块写出的同时也允许事务进行更新)
5.恢复算法:
(1)事务回滚

Alt


(2)系统崩溃后的恢复:(从上个检查点重做至崩溃时系统状态然后进行回滚撤销)

Alt


eg.

Alt

6.缓冲区管理:
(1)日志记录缓冲:
由于使用了日志缓冲区,日志记录在输出到稳定存储器前可能有一段时间只存在于主存,崩溃的时候会发生丢失,我们必须对恢复技术增加一些要求以保证事务的原子性:
·在日志记录输出到稳定存储器后,事务Ti进入提交状态。
·在日志记录输出到稳定存储器前,与事务Ti有关的所有日志记录必须已经输出到稳定存储器。
·在主存中的数据库输出数据库前,所有与数据块有关的日志记录必须已经输出到稳定存储器。(这一条规则称为先写日志,只要求日志中的undo信息已经输出到稳定存储器中,而redo信息允许以后再写)
*将缓冲的日志写到磁盘有时候称为强制日志。
(2)数据库缓冲
·强制(事务在提交时强制地将修改过的块输出到磁盘)
·非强制(修改了某些还没写回到磁盘的块也允许提交)
·非窃取策略(仍然活跃的事务修改的块不应该写出到磁盘)
·窃取策略(修改的块写到磁盘)

Alt


·脏块(已经修改过但未输出的块)

(3)模糊检查点(允许在checkpoint记录写入日志后,在修改过的缓冲块写到磁盘前开始做更新)

Alt


7.非易失性存储器数据丢失的故障:
方法:基本应对方法就是周期性将整个数据库内容转储到稳定存储器中

Alt


数据库内容的转储也称为归档转储(转为文档);大多数数据库支持sql转储(将sql DDL语句和sql insert语句写到文件中)
8.锁的提前释放和逻辑undo操作
(1)逻辑操作
插入和删除操作时一类操作的例子,它们需要逻辑undo操作,因为他们提前释放锁,我们把这样的操作称作逻辑操作。
一旦释放了低级别的锁,就不能用更新的数据项的旧值来对操作进行撤销,而必须通过执行一个补偿操作来撤销;这样的操作称作逻辑undo操作。
(2)逻辑undo日志记录
记录操作的这类信息的日志称作逻辑日志,记录新值旧值的信息的日志称为物理日志。如果一个操作在一行上执行多次与执行一次结果相同,则称该操作是幂等的。
(3)有逻辑undo的事务回滚:

Alt


eg.

Alt


Alt


9.远程备份系统

Alt

Alt


Alt

原文地址:https://www.jb51.cc/wenti/3280185.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐