From: | Jeremy Schneider <schneider(at)ardentperf(dot)com> |
---|---|
To: | Sami Imseih <samimseih(at)gmail(dot)com> |
Cc: | Nathan Bossart <nathandbossart(at)gmail(dot)com>, pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: another autovacuum scheduling thread |
Date: | 2025-10-08 23:40:57 |
Message-ID: | 20251008164057.6bceb9ed@ardentperf.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Wed, 8 Oct 2025 12:06:29 -0500
Sami Imseih <samimseih(at)gmail(dot)com> wrote:
>
> One risk I see with this approach is that we will end up autovacuuming
> tables that also take the longest time to complete, which could cause
> smaller, quick-to-process tables to be neglected.
>
> It’s not always the case that the oldest tables in terms of (M)XID age
> are also the most expensive to vacuum, but that is often more true
> than not.
I think an approach of doing largest objects first actually might work
really well for balancing work amongst autovacuum workers. Many years
ago I designed a system to backup many databases with a pool of workers
and used this same simple & naive algorithm of just reverse sorting on
db size, and it worked remarkably well. If you have one big thing then
you probably want someone to get started on that first. As long as
there's a pool of workers available, as you work through the queue, you
can actually end up with pretty optimal use of all the workers.
-Jeremy
From | Date | Subject | |
---|---|---|---|
Next Message | David Rowley | 2025-10-08 23:41:01 | Re: truncate_useless_pathkeys() doesn't account for window function queries |
Previous Message | Masahiko Sawada | 2025-10-08 23:02:44 | Re: Use streaming read I/O in BRIN vacuuming |