Re: Reduce WAL logging of INSERT SELECT - Mailing list pgsql-hackers

From Heikki Linnakangas
Subject Re: Reduce WAL logging of INSERT SELECT
Date
Msg-id 4E3CFA02.3000209@enterprisedb.com
Whole thread Raw
In response to Re: Reduce WAL logging of INSERT SELECT  (Gokulakannan Somasundaram <gokul007@gmail.com>)
List pgsql-hackers
On 06.08.2011 06:32, Gokulakannan Somasundaram wrote:
>>
>> However, for small operations it's a net loss - you avoid writing a WAL
>> record, but you have to fsync() the heap instead. If you only modify a few
>> rows, the extra fsync (or fsyncs if there are indexes too) is more expensive
>> than writing the WAL.
>>
>> We'd need a heuristic to decide whether to write WAL or fsync at the end.
>> For regular INSERTs, UPDATEs and DELETEs, you have the planner's estimate of
>> number of rows affected. Another thing we should do is move the fsync call
>> from the end of COPY (and other such operations) to the end of transaction.
>> That way if you do e.g one COPY followed by a bunch of smaller INSERTs or
>> UPDATEs, you only need to fsync the files once.
>
>
> Have you thought about recovery, especially when the page size is greater
> than the disk block size(>  4K ). With WAL, there is a way to restore the
> pages to the original state, during recovery, if there are partial page
> writes. Is it possible to do the same with direct fsync without WAL?

The point of the optimization is that you can only skip WAL when it's 
been created (or truncated) in the same transaction. In that case, if 
the transaction aborts because of a crash, you don't care about the 
contents of the table anyway.

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


pgsql-hackers by date:

Previous
From: Dean Rasheed
Date:
Subject: Re: cataloguing NOT NULL constraints
Next
From: Peter Eisentraut
Date:
Subject: Re: cataloguing NOT NULL constraints