Use
VACUUM (VERBOSE) para obter estatísticas detalhadas do que está fazendo e por quê. Existem três razões pelas quais as tuplas mortas não podem ser removidas:
-
Há uma transação de longa duração que não foi fechada. Você pode encontrar os bad boys com
SELECT pid, datname, usename, state, backend_xmin FROM pg_stat_activity WHERE backend_xmin IS NOT NULL ORDER BY age(backend_xmin) DESC;
Você pode se livrar de uma transação compg_cancel_backend()oupg_terminate_backend().
-
Existem transações preparadas que não foram comprometidas. Você pode encontrá-los com
SELECT gid, prepared, owner, database, transaction FROM pg_prepared_xacts ORDER BY age(transaction) DESC;
UsuárioCOMMIT PREPAREDouROLLBACK PREPAREDpara fechá-los.
-
Existem slots de replicação que não são usados. Encontre-os com
SELECT slot_name, slot_type, database, xmin FROM pg_replication_slots ORDER BY age(xmin) DESC;
Usepg_drop_replication_slot()para excluir um slot de replicação não utilizado.