| 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: | Whole Thread | Raw Message | 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.
| 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 |