Gebruik VACUUM (VERBOSE) om gedetailleerde statistieken te krijgen van wat het doet en waarom.
Er zijn drie redenen waarom dode tupels niet kunnen worden verwijderd:
-
Er is een langlopende transactie die niet is afgesloten. Je kunt de slechteriken vinden met
SELECT pid, datname, usename, state, backend_xmin FROM pg_stat_activity WHERE backend_xmin IS NOT NULL ORDER BY age(backend_xmin) DESC;U kunt een transactie verwijderen met
pg_cancel_backend()ofpg_terminate_backend(). -
Er zijn voorbereide transacties die niet zijn vastgelegd. Je kunt ze vinden met
SELECT gid, prepared, owner, database, transaction FROM pg_prepared_xacts ORDER BY age(transaction) DESC;Gebruiker
COMMIT PREPAREDofROLLBACK PREPAREDom ze te sluiten. -
Er zijn replicatieslots die niet worden gebruikt. Vind ze met
SELECT slot_name, slot_type, database, xmin FROM pg_replication_slots ORDER BY age(xmin) DESC;Gebruik
pg_drop_replication_slot()om een ongebruikt replicatieslot te verwijderen.