Usa VACUUM (VERBOSE)
para obtener estadísticas detalladas de lo que está haciendo y por qué.
Hay tres razones por las que no se pueden eliminar las tuplas inactivas:
-
Hay una transacción de larga ejecución que no se ha cerrado. Puedes encontrar a los chicos malos con
SELECT pid, datname, usename, state, backend_xmin FROM pg_stat_activity WHERE backend_xmin IS NOT NULL ORDER BY age(backend_xmin) DESC;
Puede deshacerse de una transacción con
pg_cancel_backend()
opg_terminate_backend()
. -
Hay transacciones preparadas que no se han comprometido. Puedes encontrarlos con
SELECT gid, prepared, owner, database, transaction FROM pg_prepared_xacts ORDER BY age(transaction) DESC;
Usuario
COMMIT PREPARED
oROLLBACK PREPARED
para cerrarlos. -
Hay ranuras de replicación que no se utilizan. Encuéntralos con
SELECT slot_name, slot_type, database, xmin FROM pg_replication_slots ORDER BY age(xmin) DESC;
Usa
pg_drop_replication_slot()
para eliminar una ranura de replicación no utilizada.