PostgreSQL:截短后未发布磁盘空间
-
16-10-2019 - |
题
我有TRUNCATE
da巨大(〜120GB)表 files
:
TRUNCATE files;
VACUUM FULL files;
桌子大小为0,但没有释放磁盘空间。有什么想法如何收回我的丢失磁盘空间?
更新:磁盘空间在约12小时后释放,我身边没有任何动作。我使用Ubuntu 8.04服务器。
解决方案
根据 来源中的评论, truncate
创建一个新的空存储文件,并在提交时间删除旧的存储文件。 (Docs建议“存储文件”只是关于操作系统的文件,但我可能会误解术语。)
为该关系创建一个新的空存储文件,并将其分配为Relfilenode值。旧存储文件计划在COMMIT上删除。
由于它似乎正在删除文件,因此我可以想象在某些情况下,基础操作系统可能不会立即释放该空间。我认为在某些情况下,存储文件可能最终进入Windows下的回收箱。但是就我而言,在Postgresql 9下截断了一张表。
WAL日志中还记录了截断。我不知道会产生多少影响。
不隶属于 dba.stackexchange