Monitoring and tuning a vacuum
If you're currently waiting for a long-running vacuum (or autovacuum) to finish, go straight to the How to do it... section.
If you've just had a long-running vacuum complete, then you may want to think about setting a few parameters.
Getting ready
autovacuum_max_workers
should always be set to more than 2. Setting it too high may not be very useful, and so you need to be careful.
Setting vacuum_cost_delay
too high is counterproductive. VACUUM
is your friend, not your enemy, so delaying it until it doesn't happen at all just makes things worse.
maintenance_work_mem
should be set to anything up to 1 GB, according to how much memory you can allocate to this task at this time.
Let's watch what happens when we run a large VACUUM
. Don't run VACUUM FULL
, because it runs for a long time while holding an AccessExclusiveLock
on the table.
First, locate which process is running the VACUUM
by using the pg_stat_activity
view to identify the specific pid
(34399
is just an example...