Re: WALWriteLock contention - Mailing list pgsql-hackers

From Robert Haas
Subject Re: WALWriteLock contention
Date
Msg-id D1385D38-E1CC-4099-BD45-CF020EEED4F5@gmail.com
Whole thread Raw
In response to Re: WALWriteLock contention  (Amit Kapila <amit.kapila16@gmail.com>)
Responses Re: WALWriteLock contention  (Amit Kapila <amit.kapila16@gmail.com>)
List pgsql-hackers
On May 17, 2015, at 11:04 AM, Amit Kapila <amit.kapila16@gmail.com> wrote:
On Sun, May 17, 2015 at 7:45 AM, Robert Haas <robertmhaas@gmail.com> wrote:
>
> <crazy-idea>I wonder if we could write WAL to two different files in
> alternation, so that we could be writing to one file which fsync-ing
> the other.</crazy-idea>

Won't the order of transactions replay during recovery can cause
problems if we do alternation while writing.  I think this is one of
the reasons WAL is written sequentially.  Another thing is that during
recovery, currently whenever we encounter mismatch in stored CRC
and actual record CRC, we call it end of recovery, but with writing
to 2 files simultaneously we might need to rethink that rule.

Well, yeah. That's why I said it was a crazy idea.

I think first point in your mail related to rewrite of 8K block each
time needs more thought and may be some experimentation to
check whether writing in lesser units based on OS page size or
sector size leads to any meaningful gains.  Another thing is that
if there is high write activity, then group commits should help in
reducing IO for repeated writes and in the tests we can try by changing
commit_delay to see if that can help (if the tests are already tuned
with respect to commit_delay, then ignore this point).

I am under the impression that using commit_delay usefully is pretty hard but, of course, I could be wrong.

...Robert

pgsql-hackers by date:

Previous
From: José Luis Tallón
Date:
Subject: Re: RFC: Non-user-resettable SET SESSION AUTHORISATION
Next
From: "David G. Johnston"
Date:
Subject: Re: Problems with question marks in operators (JDBC, ECPG, ...)