[Proposal] vacuumdb --schema only - Mailing list pgsql-hackers

From Gilles Darold
Subject [Proposal] vacuumdb --schema only
Date
Msg-id 929fbf3c-24b8-d454-811f-1d5898ab3e91@migops.com
Whole thread Raw
Responses Re: [Proposal] vacuumdb --schema only  (Justin Pryzby <pryzby@telsasoft.com>)
Re: [Proposal] vacuumdb --schema only  (Dinesh Chemuduru <dinesh.kumar@migops.com>)
Re: [Proposal] vacuumdb --schema only  (Gilles Darold <gilles@migops.com>)
List 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

pgsql-hackers by date:

Previous
From: Kyotaro Horiguchi
Date:
Subject: Re: pg_tablespace_location() failure with allow_in_place_tablespaces
Next
From: Bharath Rupireddy
Date:
Subject: Regression tests failures on Windows Server 2019 - on master at commit # d816f366b