Använd VACUUM (VERBOSE)
för att få detaljerad statistik över vad den gör och varför.
Det finns tre anledningar till att döda tuplar inte kan tas bort:
-
Det finns en långvarig transaktion som inte har avslutats. Du kan hitta de dåliga pojkarna med
SELECT pid, datname, usename, state, backend_xmin FROM pg_stat_activity WHERE backend_xmin IS NOT NULL ORDER BY age(backend_xmin) DESC;
Du kan bli av med en transaktion med
pg_cancel_backend()
ellerpg_terminate_backend()
. -
Det finns förberedda transaktioner som inte har begåtts. Du kan hitta dem med
SELECT gid, prepared, owner, database, transaction FROM pg_prepared_xacts ORDER BY age(transaction) DESC;
Användaren
COMMIT PREPARED
ellerROLLBACK PREPARED
för att stänga dem. -
Det finns replikeringsplatser som inte används. Hitta dem med
SELECT slot_name, slot_type, database, xmin FROM pg_replication_slots ORDER BY age(xmin) DESC;
Använd
pg_drop_replication_slot()
för att ta bort en oanvänd replikeringsplats.