撕裂页面
一个 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)。