On 01/22/2015 10:34 PM, Jim Nasby wrote:
On 1/22/15 2:19 PM, Heikki Linnakangas wrote:
On 01/22/2015 09:20 PM, Bruce Momjian wrote:
One question I have is whether hint bits are set by read-only
transactions on standby servers.

No. See comments in 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.
          */
         if (XLogHintBitIsNeeded() && (bufHdr->flags & BM_PERMANENT))
         {
             /*
              * If we're in recovery we cannot dirty a page because of a hint.
              * We can set the hint, just not dirty the page as a result so the
              * hint is lost when we evict the page or shutdown.
              *
              * See src/backend/storage/page/README for longer discussion.
              */
             if (RecoveryInProgress())
                 return;

What if XLogHintBitIsNeeded is false? That would be the case if we're not wall 
logging hints *on the standby*.

Then the page will be updated without writing a WAL record. Just like in the master, if wal_log_hints is off. wal_log_hints works the same on the master or the standby.

- Heikki


--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to