Gunakan VACUUM (VERBOSE) untuk mendapatkan statistik terperinci tentang apa yang dilakukannya dan mengapa.
Ada tiga alasan mengapa tupel mati tidak dapat dihapus:
-
Ada transaksi lama yang belum ditutup. Anda dapat menemukan anak-anak nakal dengan
SELECT pid, datname, usename, state, backend_xmin FROM pg_stat_activity WHERE backend_xmin IS NOT NULL ORDER BY age(backend_xmin) DESC;Anda dapat menghapus transaksi dengan
pg_cancel_backend()ataupg_terminate_backend(). -
Ada transaksi yang disiapkan yang belum dilakukan. Anda dapat menemukannya dengan
SELECT gid, prepared, owner, database, transaction FROM pg_prepared_xacts ORDER BY age(transaction) DESC;Pengguna
COMMIT PREPAREDatauROLLBACK PREPAREDuntuk menutupnya. -
Ada slot replikasi yang tidak digunakan. Temukan mereka dengan
SELECT slot_name, slot_type, database, xmin FROM pg_replication_slots ORDER BY age(xmin) DESC;Gunakan
pg_drop_replication_slot()untuk menghapus slot replikasi yang tidak digunakan.