Re: a verbose option for autovacuum - Mailing list pgsql-hackers
From | Stephen Frost |
---|---|
Subject | Re: a verbose option for autovacuum |
Date | |
Msg-id | 20210123181117.GX27507@tamriel.snowman.net Whole thread Raw |
In response to | Re: a verbose option for autovacuum (Tommy Li <tommy@coffeemeetsbagel.com>) |
Responses |
Re: a verbose option for autovacuum
|
List | pgsql-hackers |
Greetings, On Fri, Jan 22, 2021 at 2:33 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > Tommy Li <tommy@coffeemeetsbagel.com> writes: > > Additionally, is there any interest in exposing more vacuum options to be > > run by autovac? Right now it runs FREEZE and ANALYZE, which leaves the > > VERBOSE, SKIP_LOCKED, INDEX_CLEANUP, and TRUNCATE unconfigurable. > > To the extent that any of these make sense in autovacuum, I'd say they > ought to be managed automatically. I don't see a strong argument for > users configuring this. (See also nearby thread about allowing index > AMs to control some of this.) I agree that it'd be nice to figure out some way to have these managed automatically, but it's probably useful to point out to Tommy that you can set vacuum options on a table level which autovacuum should respect, such as vacuum_index_cleanup and vacuum_truncate. For skip locked, autovacuum already will automatically release it's attempt to acquire a lock if someone backs up behind it for too long. Until we get something automatic though, I could see being able to set TRUNCATE, in particular, to be off globally as useful when running a system with replicas that might end up having queries which block WAL replay. If no one is stepping up to build some way to handle that automatically then I'd be in support of making it something that an administrator can configure (to avoid having to always remember to do it for each table created...). * Tommy Li (tommy@coffeemeetsbagel.com) wrote: > > Seems like that would very soon feel like log spam. What would be the > > use case for having this on? If you want one-off results you could > > run VACUUM manually. > > In my case I have a fairly large, fairly frequently updated table with a > large number of indexes where autovacuum's runtime can fluctuate between 12 > and 24 hours. If I want to investigate why autovacuum today is running many > hours longer than it did last week, the only information I have to go off > is from pg_stat_progress_vacuum, which reports only progress based on the > number of blocks completed across _all_ indexes. > > VACUUM VERBOSE's output is nice because it reports runtime per index, which > would allow me to see if a specific index has bloated more than usual. > > I also have autovacuum throttled much more aggressively than manual > vacuums, so information from a one-off manual VACUUM isn't comparable. I tend to agree that this is pretty useful information to have included when trying to figure out what autovacuum's doing. > As for log spam, I'm not sure it's a problem as long as the verbose option > is disabled by default. While this would be in-line with our existing dismal logging defaults, I'd be happier with a whole bunch more logging enabled by default, including this, so that we don't have to tell everyone who deploys PG to go enable this very sensible logging. Arguments of 'log spam' really fall down when you're on the receiving end of practically empty PG logs and trying to figure out what's going on. Further, log analysis tools exist to aggregate this data and bring it up to a higher level for administrators. Still, I'd much rather have the option, even if disabled by default, than not have it at all. Thanks, Stephen
Attachment
pgsql-hackers by date: