数据库崩溃恢复为何需要预写日志、检查点与页校验,它们如何共同保证持久性?
简答题困难513 次浏览
参考答案与解析
# 核心结论
数据库要在崩溃后兑现已提交事务的持久性承诺,不能只依赖数据页写盘,而要同时使用预写日志、检查点和页校验。预写日志要求描述页面修改的日志先于对应脏页持久化,并且事务提交记录必须在返回成功前越过可靠的持久化边界;检查点记录恢复所需状态并推进恢复起点,避免每次重启都扫描全部历史日志;页校验用于发现撕裂写、介质静默损坏或错误页面。三者分别解决“能否重放”“要重放多少”“页面是否可信”,相互配合但不能互相替代。
# 底层机制
事务执行时,数据库通常先修改缓冲池中的页面,使其成为脏页,同时追加带顺序位置的日志记录。只要日志先可靠落盘,数据页就可以异步刷新;即使崩溃发生在数据页落盘之前,恢复过程仍能根据日志重做已提交修
