Re: Possible to trigger autovacuum?

2024-02-20 Thread Alvaro Herrera
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 HerreraBreisgau, Deutschland  —  https://www.EnterpriseDB.com/




Re: Possible to trigger autovacuum?

2024-02-19 Thread Michael Paquier
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


signature.asc
Description: PGP signature


Possible to trigger autovacuum?

2024-02-19 Thread Chris Cleveland
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