Brug VACUUM (VERBOSE)
for at få detaljerede statistikker over, hvad den laver og hvorfor.
Der er tre grunde til, at døde tupler ikke kan fjernes:
-
Der er en langvarig transaktion, som ikke er blevet afsluttet. Du kan finde de dårlige drenge 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 slippe af med en transaktion med
pg_cancel_backend()
ellerpg_terminate_backend()
. -
Der er forberedte transaktioner, som ikke er indgået. Du kan finde dem med
SELECT gid, prepared, owner, database, transaction FROM pg_prepared_xacts ORDER BY age(transaction) DESC;
Bruger
COMMIT PREPARED
ellerROLLBACK PREPARED
for at lukke dem. -
Der er replikationsslots, som ikke bruges. Find dem med
SELECT slot_name, slot_type, database, xmin FROM pg_replication_slots ORDER BY age(xmin) DESC;
Brug
pg_drop_replication_slot()
for at slette en ubrugt replikeringsplads.