我在本地安装了9.1数据库,只有几个表具有cca。300 mio记录,数据库增长到约20 GB。之后,我发出delete from
命令从中删除所有记录(我应该使用过truncate
,但我不知道)。因此,我对数据库进行了充分的清理以回收磁盘空间,但这无济于事。我的问题看起来与此相同,但是没有提供解决方案。我已经检查了此线程和有关“恢复磁盘空间”的文档,但仍然找不到解决方案。我使用此代码来获取所有表的大小
SELECT nspname || '.' || relname AS "relation",
pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size"
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE nspname NOT IN ('pg_catalog', 'information_schema')
AND C.relkind <> 'i'
AND nspname !~ '^pg_toast'
ORDER BY pg_total_relation_size(C.oid) DESC
LIMIT 15;
总计不足1GB
SELECT pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname)) AS size FROM pg_database
仍显示约20 GB。任何建议,不胜感激。
pg_catalog
和中的表information_schema
。因此,请通过删除该WHERE
子句中的限制来尝试查看是否有这些限制。请显示您的确切PostgreSQL版本(SELECT version()
),以及您要“清空整个数据库”的确切操作,即确切的命令。如果可能,请运行VACUUM FULL VERBOSE;
(无参数)并将输出粘贴到某个位置,然后在此处链接到它。