Re: Reduce WAL logging of INSERT SELECT

From: Gokulakannan Somasundaram <gokul007(at)gmail(dot)com>
To: Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
Cc: Jeff Davis <pgsql(at)j-davis(dot)com>, Bruce Momjian <bruce(at)momjian(dot)us>, Andrew Dunstan <andrew(at)dunslane(dot)net>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Reduce WAL logging of INSERT SELECT
Date: 2011-08-06 03:32:16
Message-ID: CAHMh4-acj5sQr77MfqZvSbYN5y0soZqvDu2S0PL39Ws0P_HWsA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

>
> 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?

Gokul.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Kohei KaiGai 2011-08-06 04:33:07 Re: [v9.1] sepgsql - userspace access vector cache
Previous Message Bruce Momjian 2011-08-06 03:16:44 Re: Reduce WAL logging of INSERT SELECT