Re: vacuumdb --jobs deadlock: how to avoid pg_catalog ? - Mailing list pgsql-general

From Adrian Klaver
Subject Re: vacuumdb --jobs deadlock: how to avoid pg_catalog ?
Date
Msg-id 20790094-993c-a00b-3246-25a9f04539a6@aklaver.com
Whole thread Raw
In response to vacuumdb --jobs deadlock: how to avoid pg_catalog ?  (Eduard Rozenberg <edrozenberg@gmail.com>)
Responses Re: vacuumdb --jobs deadlock: how to avoid pg_catalog ?  (Eduard Rozenberg <edrozenberg@gmail.com>)
List pgsql-general
On 5/14/20 11:27 AM, Eduard Rozenberg wrote:
> @Adrian thanks.
> 
> I did a test vacuum full the "normal" non-parallel way (VACUUM FULL sql) 
> previously on a test db copy and saw the DB size (postgres 9.6) shrink 
> from 6.8 TB to 4.4 TB of actual, real disk space usage ($ df -d 1).
> 
> I don't know the reason so much space was "locked up" (other than there 
> is a lot of data "churn" from daily updates). But I definitely do need 
> to do the vac full on the production db to get down to the smaller size 
> - cannot afford the 2.4 TB of "wasted" space on an ongoing basis.

It may not be wasted space. A regular VACUUM marks space within a table 
available for reuse(and not returned to OS) when it removes unneeded 
tuples. It then fills that space up with new tuples, roughly speaking. 
So if the vacuuming is working properly you will reach a steady state 
where space is reused and the database on disk size grows slowly as 
reusable space is occupied. I would monitor the database size on a 
regular basis. My guess is that the VACUUM FULL is dropping the OS used 
space and then it fills up again as the database does those updates.

> 
> Based on your email it sounds like the vacuuming of those pg_catalog.* 
> tables is done regardless, as a normal part of doing vac full on my own 
> database.
> 
> Unfortunately I still don't see an ideal way to run vacuum full in 
> parallel via vacuumdb without running into the expected and documented 
> deadlock. Only method I'm aware of is to list each table individually 
> with "-t table1 -t table2..." to "vacuum db --jobs" which is not 
> pleasant and not exceedingly beautiful.
> 
> Thanks.
> 


-- 
Adrian Klaver
adrian.klaver@aklaver.com



pgsql-general by date:

Previous
From: Thomas Markus
Date:
Subject: Re: Practical usage of large objects.
Next
From: Eduard Rozenberg
Date:
Subject: Re: vacuumdb --jobs deadlock: how to avoid pg_catalog ?