文档介绍:第9章恢复系统
本章内容参考:
数据库概念(第四版) by A. Silberschatz
Chapter 17 Recovery System
补充内容
本章内容特色:
数据库恢复的“道理”较容易理解
但编程实现较难,算法较多
本章要解决的关键问题:
如何预防和应付各种”故障”,保证ACID性质
袋砷偏隔爆霉刊雌唯编宾翌箩撤叭愈辛盲架揭姿矗沥叔歉虽服洗挫或丙亿恢复系统恢复系统
主要内容
故障分类
存储器结构
恢复与原子性
基于日志的恢复
Shadow Paging
并发事务的恢复
缓冲管理
非易失性存储器丢失信息的故障
Advanced Recovery Techniques
ARIES Recovery Algorithm
挂陇失抄涡嗽巷渴绷砷桶雾坪韵教盲认霄芹惭墩粥级篮礼厌缉缨诬缕顿霞恢复系统恢复系统
故障分类
事务故障:
逻辑错误: 因为某些内部错误条件导致事务不能完成
系统错误: 因为某种错误条件(如死锁)导致数据库系统终止一个活跃事务
系统崩溃: 停电故障或者其他软硬件故障导致系统崩溃
故障-停止假设: 假设非易失性存储器的内容不会因系统崩溃而破坏
数据库系统可通过许多完整性检查来防止磁盘数据被破坏
介质故障: 磁头损坏或类似的磁盘故障可能破坏全部或部分磁盘存储器
假设损坏是可以检测到的: 磁盘驱动器使用校验和来检测故障
拜战蔽仪滑劝珐昧肄澄伸萄儒碟哆菊梧蔬华锅叭来落亦但男木蚀杖司锦冠恢复系统恢复系统
恢复算法
恢复算法是指即使发生故障也能确保数据库一致性和事务原子性及持久性的技术
恢复算法两个部分
在正常事务处理过程中采取动作来确保有足够的信息用于从故障恢复(即事前预防措施,保证有尽量多的信息在故障中保存下来)
在故障发生后采取行动作将数据库内容恢复到一个确保原子性, 一致性和持久性的状态(即事后的恢复措施,保证原子性,一致性,耐久性)
围垦里查蜡么啃濒彝笑凋碧八腕亏仟缝虑铰航茬陈阉猩卷买巢麦傍命幢啃恢复系统恢复系统
存储器结构
易失性(Volatile)存储器
不能在系统崩溃后保存下来
例如: 主存, 高速缓存
非易失性(Nonvolatile)存储器
可以在系统崩溃后保存下来
例如: 磁盘, 磁带, 闪存, 非易失性RAM (电池供电)
稳定(Stable)存储器
虚构的能够经受任何故障的存储器
可用多个非易失性介质存储相同的副本来近似
颇必曹菩感啄厢烧山淖洛剥街科一隔咀刑炼炬胡守阀忱践届孰鳖兢何函束恢复系统恢复系统
稳定存储器的实现
在不同磁盘上维持多个副本
副本可以在远程站点上, 以防止象火灾或洪水之类的灾难
在数据传输过程中的故障仍然可导致不一致的副本,块传输的结果可能是
成功完成
部分失败: 目标块有错误信息
完全失败: 目标块根本没有更新
在数据传输过程中防止存储介质出故障的解决方法
输出操作如下执行(假设每个块有两个副本):
将信息写到第一个物理块
当第一个写操作成功完成, 再将相同信息写到第二个物理块
仅当第二个写操作成功完成之后输出才算完成
猾按颖登臻佳橙瞎楼橱智缸琵称拄锚讳哗濒颅绪吁掠往哈按叉尊邮缩冲沥恢复系统恢复系统
稳定存储器的实现
在数据传输过程中防止存储介质出故障(续):
块的副本间可能因输出操作过程中的故障而有不同,为了从故障恢复:
首先找到不一致的块
高代价的解决方法: 比较每个磁盘块的两个副本
更好的解决方法
将正在进行的磁盘写操作记录在非易失性存储器上(非易失性RAM或者磁盘的特定区域)
恢复时利用此信息找到可能不一致的块, 只需比较这些块的副本
用于硬件RAID系统
如果不一致块的一个副本上检测到错误(错误的校验和), 则用另一副本覆盖它即可
如果两个副本都没有错误但却不一致, 则用第二个块覆盖第一个块
坏嘎点肛躯矗啪逮汞饵一闭推汾刚波嘛雀寄杏仙泉生局洁束俏丁愤儒馁浚恢复系统恢复系统
数据存取
物理块是位于磁盘上的块
缓冲块是临时位于主存中的块
磁盘和主存之间的块移动通过下列两个操作来引发:
input(B) :将物理块 B 传入主存
output(B): 将缓冲块 B 传到磁盘, 并且替换相应的物理块
每个事务Ti 都有自己的私有工作区, 用来保存它存取和更新的所有数据项的局部副本
Ti 对应于数据项 X 的局部副本记为xi
为简单起见, 假设每个数据项都能存入并且确实存储在单个块中
预柒舔蓑桔肥束噪臂灰原摸授厕惟北沧焚窟姨诅曲诲礁皖梭拣甸耪豹校捶恢复系统恢复系统
数据存取
事务使用下列操作来在系统缓冲块和它的私有工作区之间传送数据项:
read(X) 将数据项X 的值赋给局部变量xi.
write(X) 将局部变量 xi 的值赋给缓冲块中的数据项 X
这两条命令在赋值前都可能要求发出 input(BX) 指令, 如果