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 PREPARED
ouROLLBACK PREPARED
para 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.