当前位置: 首页 > news >正文

软考中级数据库系统工程师学习专篇(67、数据库恢复)

67、数据库恢复

数据库故障恢复中基于检查点的事务分类与处理策略

在数据库系统发生故障后的恢复过程中,​检查点(Checkpoint)​​ 技术是关键机制,它能有效缩小恢复范围,减少需要扫描的日志量,从而加速恢复进程

。其核心逻辑是:系统只需从最后一个检查点开始恢复,而不必处理整个日志文件。具体解题思路如下:

  1. 1.

    定位最近检查点​:首先,在日志文件中找到最近的一个检查点记录。检查点是数据库系统定期写入的一个特殊记录,它标志着在该时间点之前,所有已提交事务对数据库的修改都已经从内存缓冲区刷新到了物理磁盘上,数据库处于一个已知的一致状态

  2. 2.

    识别检查点时刻的活动事务​:查看该检查点记录中包含的信息(通常包含一个活动事务列表),或向前扫描日志,找出所有在检查点记录之前有 START标志但尚未有 COMMITROLLBACK结束标志的事务。这些事务在检查点时刻是活动事务(Active Transactions)​

  3. 3.

    对事务进行分类处理​:根据事务的完成时间点相对于检查点的位置,将其分为三类,并采取不同的恢复策略:

事务类别

特征

恢复动作

原因

① 检查点前已提交的事务

在检查点记录之前就已经有 COMMIT记录的事务。

无需任何操作

这类事务的修改在检查点时已被保证写入磁盘,数据已持久化,因此无需恢复操作。

② 检查点后提交的事务

在检查点记录之后才出现 COMMIT记录的事务。

REDO (重做)​

这些事务的提交发生在检查点之后,其数据修改可能仍在内存缓冲区而未写入磁盘(系统故障导致内存丢失)。因此需要根据日志重做所有操作,确保修改不丢失。

③ 始终未提交的事务

在检查点之前开始,但在检查点之后、故障点之前始终没有COMMIT记录的事务。

UNDO (撤销)​

这些活动事务从未真正完成,为防止它们对数据库的部分修改导致数据不一致,必须根据日志撤销其所有操作,回滚到事务开始前的状态。

总而言之,检查点机制通过确立一个可靠的恢复起点,将复杂的事务恢复问题转化为对三类事务的针对性操作:​忽略已完成的、重做已提交但未落盘的、撤销从未完成的。这种分类处理方法极大地提高了数据库故障恢复的效率和可靠性

http://www.dtcms.com/a/362020.html

相关文章:

  • Spring Security 深度学习(四): 会话管理与CSRF防护
  • 2025 数字化转型期,值得关注的 10 项高价值证书解析
  • Linux笔记---计算机网络概述
  • 视频动作识别模型-C3D
  • 线程池项目代码细节5(解决linux死锁问题)
  • 关系型数据库——GaussDB的简单学习
  • 《投资-43》- 自然=》生物=》人类社会=》商业=》金融=》股市=》投资的共同逻辑:生存竞争与进化论
  • 前端实现查询数据【导出】功能
  • 自制扫地机器人(二) Arduino 机器人避障设计——东方仙盟
  • A股大盘数据-20250901 分析
  • 设计模式:代理模式(Proxy Pattern)
  • HOW - 前端团队组长提升(沟通篇)
  • kubectl-etcd
  • RSA的CTF题目环境和做题复现第1集
  • nacos微服务介绍及环境搭建
  • linux 函数 kthread_should_stop
  • 「Unity3D」RectTransform的AnchorMin与Max直接定位到Rect四角,使得Left-Top-Right-Bottom都为0
  • 【Spark Core】(三)RDD的持久化
  • MT-Workflow: Odoo 可视化工作流引擎
  • 程序员与杀毒软件:一场不必要的“战争”?程序员用什么杀毒软件?-优雅草卓伊凡
  • 人工智能语音交互开发(五)麦克风频率响应范围
  • PostgreSQL 索引大全
  • 奇偶破题:当反函数撞上奇函数
  • Nano Banana一战封神,我总结了10种官方不会告诉你的神级技巧。
  • 太浅显数学常识暴露太重大数学真相:同样是有首项的无穷数列,此列的项可多于彼列的项
  • 使用修改过的arj源码编译和测试
  • java中常见的几种排序算法
  • 算法练习——189.轮转数组
  • 二、SVN基础命令速查表
  • Python OpenCV图像处理与深度学习:Python OpenCV对象检测入门-Haar级联分类器与人脸检测