我有TRUNCATE
一个巨大的(~120Gb)表,名为files
:
TRUNCATE files;
VACUUM FULL files;
表大小为 0,但没有释放磁盘空间。任何想法如何回收我丢失的磁盘空间?
更新: 磁盘空间在大约 12 小时后被释放,我没有采取任何行动。我使用 Ubuntu 8.04 服务器。
我有TRUNCATE
一个巨大的(~120Gb)表,名为files
:
TRUNCATE files;
VACUUM FULL files;
表大小为 0,但没有释放磁盘空间。任何想法如何回收我丢失的磁盘空间?
更新: 磁盘空间在大约 12 小时后被释放,我没有采取任何行动。我使用 Ubuntu 8.04 服务器。
根据源代码中的注释,
truncate
创建一个新的空存储文件,并在提交时删除旧存储文件。(文档建议“存储文件”就操作系统而言只是一个文件,但我可能误解了术语。)由于它似乎正在删除一个文件,我可以想象在某些情况下底层操作系统可能不会立即释放该空间。例如,我想在某些情况下,存储文件可能最终会出现在 Windows 下的回收站中。但就我而言,在 PostgreSQL 9.something 下截断表会立即增加 Windows 下的可用空间。
截断也记录在 WAL 日志中。我不知道这可能会产生多大的影响。