某些扩展,主要是实现自定义访问方法的扩展,可能需要执行预写式日志记录,以确保崩溃安全性。PostgreSQL 提供了两种方法供扩展来实现此目标。
首先,扩展可以选择使用通用 WAL,这是一种特殊的 WAL 记录类型,它以通用的方式描述页面的更改。此方法易于实现,并且不需要加载扩展库即可应用记录。但是,在执行逻辑解码时,将忽略通用 WAL 记录。
其次,扩展可以选择使用自定义资源管理器。此方法更加灵活,支持逻辑解码,有时可以生成比通用 WAL 可能生成的小得多的预写式日志记录。但是,扩展实现起来更复杂。