[Proposal] vacuumdb --schema only

From: Gilles Darold <gilles(at)migops(dot)com>
To: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: [Proposal] vacuumdb --schema only
Date: 2022-03-04 09:11:28
Message-ID: 929fbf3c-24b8-d454-811f-1d5898ab3e91@migops.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

When we want to vacuum and/or analyze all tables in a dedicated schema,
let's say pg_catalog for example, there is no easy way to do that. The
VACUUM command doesn't allow it so we have to use \gexec or a SQL script
to do that. We have an external command vacuumdb that could be used to
simplify this task. For example the following command can be used to
clean all tables stored in the pg_catalog schema:

    vacuumdb --schema pg_catalog -d foo

The attached patch implements that. Option -n | --schema can be used
multiple time and can not be used together with options -a or -t.

Common use cases are an application that creates lot of temporary
objects then drop them which can bloat a lot the catalog or which have
heavy work in some schemas only. Of course the good practice is to find
the bloated tables and execute VACUUM on each table but if most of the
tables in the schema are regularly bloated the use of the vacuumdb
--schema script can save time.

I do not propose to extend the VACUUM and ANALYZE commands because their
current syntax doesn't allow me to see an easy way to do that and also
because I'm not really in favor of such change. But if there is interest
in improving these commands I will be pleased to do that, with the
syntax suggested.

Best regards,

--
Gilles Darold

Attachment Content-Type Size
0001-vacuumdb-schema-only.patch text/x-patch 9.0 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Bharath Rupireddy 2022-03-04 09:37:27 Regression tests failures on Windows Server 2019 - on master at commit # d816f366b
Previous Message Kyotaro Horiguchi 2022-03-04 09:04:00 Re: pg_tablespace_location() failure with allow_in_place_tablespaces