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