VACUUM (VERBOSE)
を使用する それが何をしているのか、そしてその理由の詳細な統計を取得するため。
死んだタプルを削除できない理由は3つあります。
-
クローズされていない長期実行トランザクションがあります。あなたは
で悪い男の子を見つけることができますSELECT pid, datname, usename, state, backend_xmin FROM pg_stat_activity WHERE backend_xmin IS NOT NULL ORDER BY age(backend_xmin) DESC;
pg_cancel_backend()
を使用してトランザクションを取り除くことができます またはpg_terminate_backend()
。 -
コミットされていない準備されたトランザクションがあります。あなたはそれらを見つけることができます
SELECT gid, prepared, owner, database, transaction FROM pg_prepared_xacts ORDER BY age(transaction) DESC;
ユーザー
COMMIT PREPARED
またはROLLBACK PREPARED
それらを閉じるために。 -
使用されていないレプリケーションスロットがあります。でそれらを見つける
SELECT slot_name, slot_type, database, xmin FROM pg_replication_slots ORDER BY age(xmin) DESC;
pg_drop_replication_slot()
を使用します 未使用のレプリケーションスロットを削除します。