Auto vacuuming high-write, high-update, and mostly read table types
That question is too broad, but here are some pointers about configuring autovacuum:

For tables that receive bulk inserts, run an explicit VACUUM afterwards or use PostgreSQL v13.

For tables with many updates, a fillfactor of 70 to 90 (depending on row size) is a good thing if no updated columns are indexed. 10 or 20 is just a crazy waste of space.

There is no need to care about autovacuum for tables that are only read.

With mass deletes, there is nothing much you can do. If you can use partitioning, that pain may vanish completely.


Of course low fillfactor will have a negative impact on query performance; that is the price you are paying for more efficient data modifications:

For sequential scans, the impact is clear: you have to read all that empty space too.

For index scans that read only a single row, there will be no performance impact.

Index scans that read several rows are somewhere in the middle, since they will have to read more blocks if fillfactor is low, because the rows will be spread across more blocks.

Don't forget the impact on caching efficiency: If your blocks consist mostly of air, the RAM used for caching will also mostly contain dead space.