Re: monitoring CREATE INDEX [CONCURRENTLY]

Alvaro Herrera <alvherre@2ndquadrant.com>

From: Alvaro Herrera <alvherre@2ndquadrant.com>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Andres Freund <andres@anarazel.de>, Simon Riggs <simon@2ndquadrant.com>, Pg Hackers <pgsql-hackers@lists.postgresql.org>, David Fetter <david@fetter.org>, Rahila Syed <rahila.syed@2ndquadrant.com>, Pavan Deolasee <pavan.deolasee@gmail.com>, Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>
Date: 2019-03-30T05:09:47Z
Lists: pgsql-hackers
On 2019-Mar-29, Robert Haas wrote:

> On Fri, Mar 29, 2019 at 3:28 PM Alvaro Herrera <alvherre@2ndquadrant.com> wrote:

> > Maybe we can consider using dynamic shmem for that, and include a
> > pointer to it in the fixed-size chunk.  (It's a bit too late to be
> > writing this code, mind; I'm just proposing this for a future
> > improvement.)
> 
> Sounds expensive.  We don't want to spend a lot of energy pushing out
> progress reports which, often enough, nobody will ever examine.  I
> designed the current system as I did to make it cheap.

Well, I'm not proposing this for things that would change more than once
or a very limited number of times during one command; certainly not once
per tuple or per block like other metrics do.  The examples I mentioned
are once per command (eg., list of OIDs of partitions to process) or
list of PIDs to wait for, which we wouldn't modify it once set for each
waiting cycle (three times for CREATE INDEX CONCURRENTLY, five times for
REINDEX CONCURRENTLY).

> Adding DSM in there would open up lots of exciting new failure
> possibilities and significantly increase the overhead.  And probably
> add quite a bit of code complexity, too.

Yeah, that's true.

Anyway, I'm not intending to tackle this for the time being.

-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services



Commits

  1. Report progress of REINDEX operations

  2. Report progress of CREATE INDEX operations

  3. Fix error handling of readdir() port implementation on first file lookup