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 PREPARED
ofROLLBACK PREPARED
om 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.