页面撕裂
底层堆栈未完全写入的 PostgreSQL 数据页
当 **页面撕裂**(也称为 **部分页面写入**)发生时,PostgreSQL 会指示操作系统写入完整的 PostgreSQL 数据页(默认为 8kb),但操作系统或底层堆栈中的某个元素会将写入拆分为多个单元(例如,两个 4kb 单元,与典型的文件系统块大小匹配),但在数据页写入的所有部分都完全完成之前发生系统故障。
PostgreSQL 通过将整个页面写入 WAL(“全页写入”)来缓解此问题。
此行为由 GUC 设置 full_page_writes
控制,默认为 on
。通常不需要更改此参数。请注意,执行 pg_start_backup() 将强制 full_page_writes
设置为 on
(请参阅 src/backend/access/transam/xlog.c 中的注释,函数do_pg_start_backup()以及提交 0a873949)。