Re: BUG #8192: On very large tables the concurrent update with vacuum lag the hot_standby replica - Mailing list pgsql-bugs

From Jeff Janes
Subject Re: BUG #8192: On very large tables the concurrent update with vacuum lag the hot_standby replica
Date
Msg-id CAMkU=1x2zB2c8w=+nwQqXUBE0KvpYdJJ1iPYtD5ko12aP029Yw@mail.gmail.com
Whole thread Raw
In response to BUG #8192: On very large tables the concurrent update with vacuum lag the hot_standby replica  (federico@brandwatch.com)
Responses Re: BUG #8192: On very large tables the concurrent update with vacuum lag the hot_standby replica  (Federico Campoli <federico@brandwatch.com>)
List pgsql-bugs
On Thursday, May 30, 2013, wrote:

> The following bug has been logged on the website:
>
> Bug reference:      8192
> Logged by:          Federico Campoli
> Email address:      federico@brandwatch.com <javascript:;>
> PostgreSQL version: 9.2.4
> Operating system:   Debian 6.0
> Description:
>
> /*
>
> Description:
>
> It seems on very large tables the concurrent update with vacuum (or
> autovacuum),
> when the slave is in hot standby mode, generates long loops in read on a
> single wal segment during the recovery process.
>
> This have two nasty effects.
> A massive read IO peak and the replay lag increasing as the recovery
> process
> hangs for long periods on a pointless loop.
>

Are you observing a loop, and if so how are you observing it?  What is it
that is looping?


> SET client_min_messages='debug2';
> SET trace_sort='on';
>

Are these settings useful?  What are they showing you?


>
> --in a new session and start an huge table update
> UPDATE t_vacuum set ts_time=now() WHERE i_id_row<20000000;
>
> --then vacuum the table
> VACUUM VERBOSE t_vacuum;
>

Are you running the update and vacuum concurrently or serially?


>
> --at some point the startup process will stuck recovering one single wal
> file and
> --the DISK READ column will show a huge IO for a while.
>

What is huge?


I don't know if I can reproduce this or not.  I certainly get spiky lag,
but I see no reason to think it is anything other than IO congestion,
occurring during stretches of WAL records where compact records describe a
larger amount of work that needs to be done in terms of poorly-cached IO.
 Perhaps the kernel's read-ahead mechanism is not working as well as it
theoretically could be.  Also the standby isn't using a ring-buffer
strategy, but I see no reason to think it would help were it to do so.

The DISK READ column is not what I would call huge during this, often 10-15
MB/S, because much of the IO is scattered rather than sequential.  The IO
wait % on the other hand is maxed out.

It is hard to consider it as a bug that the performance is not as high as
one might wish it to be.  Is this behavior a regression from some earlier
version?  What if hot-standby is turned off?

Cheers,

Jeff

pgsql-bugs by date:

Previous
From: Simon Riggs
Date:
Subject: Re: BUG #8192: On very large tables the concurrent update with vacuum lag the hot_standby replica
Next
From: divided.mind@gmail.com
Date:
Subject: BUG #8198: ROW() literals not supported in an IN clause