Re: question regarding full_page_write

From: Greg Smith <greg(at)2ndQuadrant(dot)com>
To: Martín Marqués <martin(dot)marques(at)gmail(dot)com>
Cc: AI Rumman <rummandba(at)gmail(dot)com>, pgsql-general General <pgsql-general(at)postgresql(dot)org>
Subject: Re: question regarding full_page_write
Date: 2011-08-22 21:39:54
Message-ID: 4E52CCAA.8090104@2ndQuadrant.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 08/22/2011 05:07 PM, Martín Marqués wrote:
> My question regarding your answer is, why is it important for the
> first page after a checkpoint and not on other page writes?
>

The first time a page is written after a checkpoint, when
full_page_writes is on, the entire 8K page is written out to disk at
that point. The idea is that if the page is corrupted in any way by a
partial write, you can restore it to a known good state again by using
this version. After that copy, though, additional modifications to the
page only need to save the delta of what changed, at the row level. If
there's a crash, during recovery the full page image will be written,
then the series of deltas, ending up with the same data as was intended.

This whole mechanism resets again each time a checkpoint finishes, and
the full page writes start all over again. One of the main purposes of
checkpoints are to move forward the pointer of how far back crash
recovery needs to replay from. Starting each new checkpoint over again,
with a full copy of all the data modified going into the WAL, it is part
of that logic.

--
Greg Smith 2ndQuadrant US greg(at)2ndQuadrant(dot)com Baltimore, MD
PostgreSQL Training, Services, and 24x7 Support www.2ndQuadrant.us

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Courtin Olivier 2011-08-22 22:36:25 SETOF anyelement - get_call_result_type
Previous Message Martín Marqués 2011-08-22 21:07:51 Re: question regarding full_page_write