Re: [WIP] Performance Improvement by reducing WAL for Update Operation

Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>

From: Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>
To: Simon Riggs <simon@2ndQuadrant.com>
Cc: Amit Kapila <amit.kapila@huawei.com>, pgsql-hackers@postgresql.org
Date: 2012-08-09T10:30:48Z
Lists: pgsql-hackers
On 09.08.2012 12:18, Simon Riggs wrote:
> On 9 August 2012 09:49, Amit Kapila<amit.kapila@huawei.com>  wrote:
>
>>    WAL reduction is done for the case even when old and new are on different
>> data blocks as well.
>
> That makes me feel nervous. I doubt the marginal gain is worth it.
> Most updates don't cross blocks.

That was my first instinctive reaction too. But if the mechanism works 
just as well for cross-page updates, seems a bit strange to not use it.

One argument would be that if for some reason the old block is corrupt 
or lost, you would not be able to recover the new version of the tuple 
from the WAL alone. At the moment, it's nice that the WAL record 
contains all the information required to reconstruct the new tuple, 
regardless of the old data block contents. But then again, full-page 
writes cover that too. There will be a full-page image of the old block 
in the WAL anyway.

-- 
   Heikki Linnakangas
   EnterpriseDB   http://www.enterprisedb.com