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