故障恢复(恢复处理)
低頻约 26 分钟5 个术语过去问 9 题
本单元目标
- 能说明为什么检查点会成为恢复的起点。
- 能按处理对象的事务和所用的记录,区分回滚与前滚。
- 能把后退恢复和前进恢复分别对应到它们所指的操作上。
术语总表(5 个)
术语
检查点(チェックポイント)是指把积存在内存中的更新内容集中写入磁盘的操作,也指执行这一操作的时间点。
为了加快处理速度,DBMS 不会立刻把更新写入磁盘,而是先暂存在内存中的缓冲区里。定期设置检查点后,截至该时刻的更新就已经反映到磁盘上。发生系统停止但磁盘内容仍保留的故障时,不必把按顺序记录更新过程的日志从头查起,从最近的检查点开始恢复即可。
类比这就像每到月底把家庭账本誊写清楚,即使后来发现记错了,也只需从最近一个月底开始核对。
记法check(确认)加 point(地点):确认更新已写入磁盘的那个点。
考点
- 常考检查点(チェックポイント)一词既可以指把更新集中写入磁盘的操作,也可以指执行该操作的时间点。
- 易混提交(コミット)是确定单个事务结果的操作。检查点(チェックポイント)则与各个事务何时结束无关,是定期把更新反映到磁盘上的操作。
该术语的过去问 2 题 チェックポイント →
回滚(ロールバック)是撤销未能正常结束的事务所做的更新,使数据回到该处理开始之前状态的操作。
撤销时使用日志中保存的更新前的值,把被改写的数据项逐一恢复为原值。除了故障以外,因程序错误或用户中止而使事务中途停止时,也会执行回滚。这样一来,数据库中就不会只留下执行到一半的更新。
类比就像填写申请表时中途写错了,就把那张表扔掉,重新换一张空白的。
记法roll back 意为“倒回去”。back(向后)的方向,正好对应后退复原。
考点
- 常考执行回滚(ロールバック)时,已经进行到一半的改写也会全部恢复为原值,不会留下只反映了一部分的状态。
- 常考回滚撤销的是异常终止的那个事务自身所做的更新。在此之前已经完成提交(コミット)的事务,其更新会原样保留。
- 易混提交(コミット)是确定正常结束的事务所做更新的操作,回滚(ロールバック)则是撤销未能结束的事务所做更新的操作。
该术语的过去问 3 题 ロールバック →
后退恢复(バックワードリカバリ)是通过回滚让数据库退回到处理前状态的恢复方式,也称为后退复原(後退復帰)。
它以当前的数据库为起点,从最新的记录开始依次写回日志中的更新前的值,沿时间反方向回溯。实际执行的操作就是回滚本身,后退恢复是着眼于恢复方向的叫法。
考点
- 常考事务即使中途失败也能撤销更新,是因为更新过程都记录在日志(ログ)中。
该术语的过去问 2 题 バックワードリカバリ →
前滚(ロールフォワード)是对过去某一时间点的数据库,按顺序重新应用日志中留下的更新,使其推进到故障发生前一刻状态的操作。
例如磁盘损坏导致数据丢失时,首先要恢复定期获取的备份,但仅靠备份,获取备份之后的更新仍然缺失。因此要把日志中记录的更新后的值从旧到新依次写入,重现已提交事务的结果。
类比就像电子表格文件丢了,先打开前一天的副本,再对照笔记把之后输入的内容重新敲一遍。
记法roll forward 意为“向前滚动”。forward(向前)的方向,正好对应前进复原。
考点
- 常考故障恢复时,用来重现获取备份(バックアップ)之后那些更新的材料,是记录了更新内容的日志(ログ)。
该术语的过去问 2 题 ロールフォワード →
前进恢复(フォワードリカバリ)是通过前滚把数据库推进到故障发生前一刻状态的恢复方式,也称为前进复原(前進復帰)。
它的起点是备份这类过去某一时间点的数据,利用日志中的更新后的值沿时间正方向推进。内容与前滚相同,只是这个名称体现的是向前推进的方向。
考点
- 易混因磁盘损坏而导致数据本身丢失时,使用的是前进恢复(フォワードリカバリ)。后退恢复(バックワードリカバリ)的前提是现有的数据库没有丢失、仍可使用。
该术语的过去问 1 题 フォワードリカバリ →
要点
- 只要在检查点把内存中的更新写入磁盘,恢复就可以从那个时间点开始。
- 回滚是后退恢复所执行的操作,利用日志中的更新前的值撤销更新。
- 前滚是前进恢复所执行的操作,对过去时间点的数据重新应用日志中的更新后的值。
- 恢复的材料是日志,仅靠备份无法重现备份之后的更新。
查看这个领域的全部过去问 →