Thread: Possible to trigger autovacuum?

Possible to trigger autovacuum?

From
Chris Cleveland
Date:
Is it possible to launch an autovacuum from within an extension?

I'm developing an index access method. After the index gets built it needs some cleanup and optimization. I'd prefer to do this in the amvacuumcleanup() method so it can happen periodically and asynchronously.

I could fire up a background worker to do the job, but it would be a lot simpler to call please_launch_autovacuum_right_now();


--
Chris Cleveland
312-339-2677 mobile

Re: Possible to trigger autovacuum?

From
Michael Paquier
Date:
On Mon, Feb 19, 2024 at 03:15:29PM -0600, Chris Cleveland wrote:
> Is it possible to launch an autovacuum from within an extension?
>
> I'm developing an index access method. After the index gets built it needs
> some cleanup and optimization. I'd prefer to do this in the
> amvacuumcleanup() method so it can happen periodically and asynchronously.
>
> I could fire up a background worker to do the job, but it would be a lot
> simpler to call please_launch_autovacuum_right_now();

The autovacuum launcher can be stopped in its nap with signals, like a
SIGHUP.  So you could rely on that to force a job to happen on a given
database based on the timing you're aiming for.
--
Michael

Attachment

Re: Possible to trigger autovacuum?

From
Alvaro Herrera
Date:
On 2024-Feb-19, Chris Cleveland wrote:

> Is it possible to launch an autovacuum from within an extension?
> 
> I'm developing an index access method. After the index gets built it
> needs some cleanup and optimization. I'd prefer to do this in the
> amvacuumcleanup() method so it can happen periodically and
> asynchronously.

Autovacuum has a mechanism to be requested work -- grep the tree for
AutoVacuumRequestWork and AutoVacuumWorkItemType.  Currently its only
use is BRIN autosummarization, but it's possible to add others by
patching the core code.  If you want to propose the idea of making it
extensible, I think it would serve not only your present use case but
plenty of others, too.

-- 
Álvaro Herrera        Breisgau, Deutschland  —  https://www.EnterpriseDB.com/