On Wed, 2025-05-21 at 16:34 +1200, Marcelo Fernandes wrote:
> I am trying to understand if a stuck replication slot would be sufficient to
> stop an autovacuum of even starting.
>
> Couldn't the autovacuum process start, but fail to remove dead tuples that
> are still necessary by the replication slot? Why would it prevent autovacuum
> of even starting instead?
I cannot think of a reason why an abandoned replication slot (not sure what
you mean with "stuck") would keep an autovacuum worker from starting.
Typical reasons why autovacuum doesn't start running on a table are:
- there are already "autovacuum_max_workers" worker processes running
- the thresholds for dead or inserted tuples have not been crossed
- the statistics collector has a problem and doesn't gather statistics;
this applies mostly to v14 and older, see
https://www.cybertec-postgresql.com/en/stale-statistics-cause-table-bloat/
- the parameter "track_activities" was disabled, so that PostgreSQL doesn't
collect statistics
- the functions "pg_stat_reset" or "pg_stat_reset_single_table_counters"
are called repeatedly and wipe out table statistics
Yours,
Laurenz Albe