Oracle 的 Checkpoint 机制,属于那种你一了解就会觉得“哇,原来还能这么干”的技术。它的思路挺像写 Word 文档时的自动保存——把内存里的数据定期写回磁盘,减少数据丢失的性,还能加快崩溃恢复速度。
Checkpoint 的关键点,是它不会每次都写全部数据,而是区分完全检查点和增量检查点。前者全量保存,后者只保存改动的部分,效率提升,挺适合数据量大的场景。
你会问:它到底啥时候触发?比如日志切换、手动命令,或者系统定时机制,都会搞个 Checkpoint。每次都会记录一个RBA(Redo Byte Address),通知DBWn去干活,把脏数据写盘。
整个过程还有点像生产线,Checkpoint 排队执行。里面有个叫BCQ的结构,会把要写入的脏块按顺序排好队,轮到谁,谁就写盘,流程清晰又高效。
顺带提一句,Oracle 的 Checkpoint 逻辑,还跟控制文件、数据文件里的SCN挂钩,写完之后更新一下,系统状态就算同步了,这一步重要,关系到恢复逻辑的起点。
如果你平时做数据库调优,或者要搞实例恢复,Checkpoint 这套机制值得你认真理解。要是想继续扩展,下面这些链接也挺不错的,推荐点进去看看。