Použijte VACUUM (VERBOSE)
získat podrobné statistiky toho, co dělá a proč.
Existují tři důvody, proč mrtvé n-tice nelze odstranit:
-
Existuje dlouho probíhající transakce, která nebyla uzavřena. Bad boys můžete najít pomocí
SELECT pid, datname, usename, state, backend_xmin FROM pg_stat_activity WHERE backend_xmin IS NOT NULL ORDER BY age(backend_xmin) DESC;
Transakce se můžete zbavit pomocí
pg_cancel_backend()
nebopg_terminate_backend()
. -
Existují připravené transakce, které nebyly provedeny. Můžete je najít pomocí
SELECT gid, prepared, owner, database, transaction FROM pg_prepared_xacts ORDER BY age(transaction) DESC;
Uživatel
COMMIT PREPARED
neboROLLBACK PREPARED
zavřete je. -
Existují replikační sloty, které se nepoužívají. Najděte je pomocí
SELECT slot_name, slot_type, database, xmin FROM pg_replication_slots ORDER BY age(xmin) DESC;
Použijte
pg_drop_replication_slot()
k odstranění nepoužívaného replikačního slotu.