Usa VACUUM (VERBOSE)
per ottenere statistiche dettagliate su cosa sta facendo e perché.
Ci sono tre ragioni per cui le tuple morte non possono essere rimosse:
-
C'è una transazione di lunga durata che non è stata chiusa. Puoi trovare i ragazzacci con
SELECT pid, datname, usename, state, backend_xmin FROM pg_stat_activity WHERE backend_xmin IS NOT NULL ORDER BY age(backend_xmin) DESC;
Puoi sbarazzarti di una transazione con
pg_cancel_backend()
opg_terminate_backend()
. -
Ci sono transazioni preparate che non sono state commesse. Li puoi trovare con
SELECT gid, prepared, owner, database, transaction FROM pg_prepared_xacts ORDER BY age(transaction) DESC;
Utente
COMMIT PREPARED
oROLLBACK PREPARED
per chiuderli. -
Ci sono slot di replica che non vengono utilizzati. Trovali con
SELECT slot_name, slot_type, database, xmin FROM pg_replication_slots ORDER BY age(xmin) DESC;
Usa
pg_drop_replication_slot()
per eliminare uno slot di replica inutilizzato.