加载中...
检查点是数据库中的一种周期性操作,负责把内存缓冲池里已修改但尚未落盘的脏页刷写到数据文件,并在日志中记录一个安全点。它缩短了崩溃恢复时需要重放的日志量,是保障持久性与恢复效率的关键机制。

| 类别 | 恢复与持久化机制 |
| 作用 | 刷脏页、标记恢复起点 |
| 触发条件 | 时间/日志量/内存压力 |
| 相关机制 | WAL、缓冲池 |
| 影响 | 崩溃恢复时长 |
检查点(Checkpoint)是数据库存储引擎中一种周期性的同步操作。它把缓冲池中已被修改但还没写入磁盘的脏页刷写到数据文件,并在事务日志中标记一个已知的一致位置,使得崩溃后恢复时只需从最近的检查点开始重放日志,而不必从头处理全部日志。
为了性能,数据库通常先在内存缓冲池中修改数据页,并通过预写式日志(WAL)保证持久性,数据页则延迟刷盘。这样虽然快,但如果发生崩溃,恢复过程需要重放大量日志来把内存变更重新应用到数据文件。检查点通过定期把脏页落盘并记录一个恢复起点,把恢复所需重放的日志区间限制在可控范围内。
检查点是几乎所有支持崩溃恢复的数据库(如 PostgreSQL、MySQL 的 InnoDB 等)的核心机制。它在日常运行中默默工作,直接影响崩溃后重启的恢复时长以及运行期的 I/O 平稳程度。
问:检查点太频繁或太稀疏各有什么影响?答:过于频繁会增加刷盘 I/O、影响正常吞吐;过于稀疏则会积累大量日志,使崩溃恢复变慢。需在恢复速度与运行开销之间权衡配置。
问:检查点和 WAL 是什么关系?答:WAL 保证变更先记录到日志以便恢复,检查点则通过落盘脏页缩短恢复时要重放的日志范围,二者共同保障持久性与恢复效率。

| 类别 | 恢复与持久化机制 |
| 作用 | 刷脏页、标记恢复起点 |
| 触发条件 | 时间/日志量/内存压力 |
| 相关机制 | WAL、缓冲池 |
| 影响 | 崩溃恢复时长 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧