错误:无法扩展文件“pg_tblspc/4815857/PG_11_201809051/16321”:设备上没有空间

3

我的postgres表占用了100%的内存,我想对其进行截断。

当我使用 TRUNCATE TABLE TABLE_NAME 命令时,会出现以下错误:

ERROR: could not extend file "pg_tblspc/4815857/PG_11_201809051/16321": 设备上没有剩余空间。 HINT: 检查可用磁盘空间。

因此,我尝试了DELETE FROM TABLE_NAME 命令,但它并没有释放已使用的空间。

如何强制执行截断?


为什么在使用delete from删除数据后不运行vacuum以回收空间呢? - Svetlin Zarev
@SvetlinZarev 你执行 vacuum full 不需要额外的空间吗?据我所知,它会像复制表一样进行操作,交换它们并删除旧表。 - Łukasz Kamiński
@SvetlinZarev VACUUM table_name; 给我返回了相同的错误信息:“设备上没有剩余空间”。 - Bharat Darakh
1个回答

4

TRUNCATE需要为表创建一个新的(空)文件,这可能导致您的问题。您可以DROP表并重新创建。

另一种更繁琐的方法是

DELETE FROM table_name;
VACUUM table_name;  -- no FULL!

VACUUM命令通常不会缩小表的大小,但它会从表的末尾截断空页面。如果表是空的,那么所有的页面都会被清除。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接