Thank you for reply. You are right and the PostgreSQL server writes the entire content of each disk page to WAL during the first modification of that page after a checkpoint while data checksum is on.
But I wonder whether it is necessary or not while my file system can protect the blocks of database to be torn. And I read a comment in function MarkBufferDirtyHint: ``` /* * If we need to protect hint bit updates from torn writes, WAL-log a * full page image of the page. This full page image is only necessary * if the hint bit update is the first change to the page since the * last checkpoint. * * We don't check full_page_writes here because that logic is included * when we call XLogInsert() since the value changes dynamically. */ ``` However, the code tell me it has nothing to do with full_page_writes. I can't figure it out. -- Zhang Wenjie ------------------ ???????? ------------------ ??????: "Japin Li" <japi...@hotmail.com>; ????????: 2021??7??6??(??????) ????7:04 ??????: "zwj"<757634...@qq.com>; ????: "pgsql-hackers"<pgsql-hackers@lists.postgresql.org>; ????: Re: Why is XLOG_FPI_FOR_HINT always need backups? On Tue, 06 Jul 2021 at 17:58, zwj <757634...@qq.com> wrote: > Hi all, > > When I read the source code file src/backend/access/transam/xloginsert.c, I get something confused me. > In the function XLogSaveBufferForHint, the flags are always REGBUF_FORCE_IMAGE which means it is always need backups. > Is it right? Why do not check the full_page_writes? The documentation [1] says: ------------------------------------------------------------------------------ wal_log_hints (boolean) When this parameter is on, the PostgreSQL server writes the entire content of each disk page to WAL during the first modification of that page after a checkpoint, even for non-critical modifications of so-called hint bits. ------------------------------------------------------------------------------ Does that mean whether the full_page_writes enable or not, if the wal_log_hints enabled, we always write the entire content of each disk page to WAL? If I'm right, should we mention this in wal_log_hints? [1] https://www.postgresql.org/docs/current/runtime-config-wal.html -- Regrads, Japin Li. ChengDu WenWu Information Technology Co.,Ltd.