Hi, With commit c120550edb86, If we got the cleanup lock on the page, lazy_scan_prune() marks dead item IDs directly to LP_UNUSED. So the following check with has_lpdead_items made the periodic FSM vacuum in the one-pass strategy vacuum no longer being triggered:
if (got_cleanup_lock && vacrel->nindexes == 0 && has_lpdead_items && blkno - next_fsm_block_to_vacuum >= VACUUM_FSM_EVERY_PAGES) { FreeSpaceMapVacuumRange(vacrel->rel, next_fsm_block_to_vacuum, blkno); next_fsm_block_to_vacuum = blkno; } Before c120550edb86, since we marked dead item IDs to LP_DEAD once even in the one-pass strategy vacuum, we used to call lazy_vacuum_heap_page() to vacuum the page and to call FreeSpaceMapVacuum() periodically, so we had that check. I've attached a patch to fix it. Regards, -- Masahiko Sawada Amazon Web Services: https://aws.amazon.com