我有一个大约 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 减小到了 43GB,但我找不到丢失的 10.5GB你知道那里可以存储什么或者我应该怎么做吗?