最近,我了解了一些有关PostgreSQL数据校验和的知识,并对校验和与整页图像之间的关系感到困惑。
如以下评论所述:
如果我们需要保护提示位更新免受写入破坏,请WAL-log a 页面的完整页面图像。此全页图片仅是必需的 如果提示位更新是自 最后一个检查点。
我们不在此处检查full_page_writes,因为其中包含该逻辑 当我们调用XLogInsert()时,因为值会动态更改。
如我所知,如果我们需要保护页面免受包括提示位更新的写入损坏,则应启用full_page_writes
。即使full_page_writes
已关闭,即使校验和仍能够检测到残缺的页面,为什么还要在WAL上写完整的页面图像?
答案 0 :(得分:1)
如果页面撕裂,校验和将产生错误,但不会纠正该错误。它只告诉您,是时候从备份还原了。
如果您想完全避免该问题,请将full_page_writes
设置为on
。