Re: error context for vacuum to include block number

Amit Kapila <amit.kapila16@gmail.com>

From: Amit Kapila <amit.kapila16@gmail.com>
To: Masahiko Sawada <masahiko.sawada@2ndquadrant.com>
Cc: Justin Pryzby <pryzby@telsasoft.com>, Alvaro Herrera <alvherre@2ndquadrant.com>, Andres Freund <andres@anarazel.de>, Michael Paquier <michael@paquier.xyz>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2020-03-27T08:55:42Z
Lists: pgsql-hackers
On Fri, Mar 27, 2020 at 1:29 PM Masahiko Sawada
<masahiko.sawada@2ndquadrant.com> wrote:
>
> On Fri, 27 Mar 2020 at 07:17, Justin Pryzby <pryzby@telsasoft.com> wrote:
> >
> > On Thu, Mar 26, 2020 at 10:04:57AM -0500, Justin Pryzby wrote:
> > > Does that address your comment ?
> >
> > I hope so.
>
> Thank you for updating the patch. I'm concerned a bit about overhead
> of frequently updating and reverting the callback arguments in
> lazy_vacuum_page(). We call that function every time when we vacuum a
> page, but if the table has an index, we actually don't need to update
> the callback arguments in that function. But I hope it's negligible
> since all operation will be performed on memory.
>

Right, it will be a few instructions.  I think if there is any
overhead of this, we can easily avoid that by (a) adding a check in
update_vacuum_error_cbarg which tells if the phase is getting changed
or not and if it is not changed, then return, (b) pass additional in
lazy_vacuum_page() to indicate whether we need to change the phase,
(c) just invoke update_vacuum_error_cbarg() in the caller.   The
current way appears to be a bit neat than these options, so not sure
if there is an advantage in changing it.  Anyway, if we see any
problem with that it is trivial to change it.

-- 
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com



Commits

  1. Avoid calls to RelationGetRelationName() and RelationGetNamespace() in

  2. Introduce vacuum errcontext to display additional information.

  3. Fix mesurement of elapsed time during truncating heap in VACUUM.

  4. Allow vacuum command to process indexes in parallel.

  5. Refactor code dedicated to index vacuuming in vacuumlazy.c

  6. Remove duplicated progress reporting during heap scan of VACUUM