約 43GB のデータベースがあります。pg_largeobject テーブルのサイズを数えると、43GBも得られます。
SELECT pg_size_pretty(pg_table_size('pg_largeobject'));
次のコマンドですべての大きなオブジェクトのサイズを合計すると:
SELECT sum(length(pg.data)) FROM pg_largeobject pg;
それは私に32.5GBを与えます。次の方法で、望ましいオブジェクト以外のすべてのオブジェクトのリンクを解除しようとしました。
SELECT lo_unlink(l.loid)
FROM pg_largeobject l
GROUP BY loid
HAVING (NOT EXISTS (SELECT 1 FROM data_file t WHERE t.file_content = l.loid))
AND (NOT EXISTS (SELECT 1 FROM license t WHERE t.attachment_content = l.loid))
AND (NOT EXISTS (SELECT 1 FROM personal_license t WHERE t.attachment_content = l.loid))
AND (NOT EXISTS (SELECT 1 FROM scenario t WHERE t.scenario_file = l.loid))
AND (NOT EXISTS (SELECT 1 FROM service_result t WHERE t.content = l.loid));
VACUUM を実行します。
VACUUM FULL ANALYZE pg_largeobject;
一度試してみたところ、47GBから43に減りましたが、足りない10.5GBが見つかりませんそこに何が保存できるのか、どうすればいいのか分かりますか?