From: | Maxim Orlov <orlovmg(at)gmail(dot)com> |
---|---|
To: | Postgres hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | POC: Parallel processing of indexes in autovacuum |
Date: | 2025-04-16 11:04:53 |
Message-ID: | CACG=ezZOrNsuLoETLD1gAswZMuH2nGGq7Ogcc0QOE5hhWaw=cw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi!
The VACUUM command can be executed with the parallel option. As
documentation states, it will perform index vacuum and index cleanup phases
of VACUUM in parallel using *integer* background workers. But such an
interesting feature is not used for an autovacuum. After a quick look at
the source codes, it became clear to me that when the parallel option was
added, the corresponding option for autovacuum wasn't implemented, although
there are no clear obstacles to this.
Actually, one of our customers step into a problem with autovacuum on a
table with many indexes and relatively long transactions. Of course, long
transactions are an ultimate evil and the problem can be solved by calling
running vacuum and a cron task, but, I think, we can do better.
Anyhow, what about adding parallel option for an autovacuum? Here is a POC
patch for proposed functionality. For the sake of simplicity's, several
GUC's have been added. It would be good to think through the parallel
launch condition without them.
As always, any thoughts and opinions are very welcome!
--
Best regards,
Maxim Orlov.
Attachment | Content-Type | Size |
---|---|---|
WIP-Allow-autovacuum-to-process-indexes-of-single-table.patch | application/octet-stream | 58.2 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2025-04-16 11:24:13 | Re: not null constraints, again |
Previous Message | Konstantin Osipov | 2025-04-16 10:02:00 | Re: Built-in Raft replication |