我有TRUNCATEda巨大(〜120GB)表 files:

TRUNCATE files;
VACUUM FULL files;

桌子大小为0,但没有释放磁盘空间。有什么想法如何收回我的丢失磁盘空间?

更新:磁盘空间在约12小时后释放,我身边没有任何动作。我使用Ubuntu 8.04服务器。

有帮助吗?

解决方案

根据 来源中的评论, truncate 创建一个新的空存储文件,并在提交时间删除旧的存储文件。 (Docs建议“存储文件”只是关于操作系统的文件,但我可能会误解术语。)

为该关系创建一个新的空存储文件,并将其分配为Relfilenode值。旧存储文件计划在COMMIT上删除。

由于它似乎正在删除文件,因此我可以想象在某些情况下,基础操作系统可能不会立即释放该空间。我认为在某些情况下,存储文件可能最终进入Windows下的回收箱。但是就我而言,在Postgresql 9下截断了一张表。

WAL日志中还记录了截断。我不知道会产生多少影响。

许可以下: CC-BY-SA归因
不隶属于 dba.stackexchange
scroll top