我的postgres表占用了100%的内存
,我想对其进行截断。
当我使用 TRUNCATE TABLE TABLE_NAME
命令时,会出现以下错误:
ERROR: could not extend file "pg_tblspc/4815857/PG_11_201809051/16321": 设备上没有剩余空间。 HINT: 检查可用磁盘空间。
因此,我尝试了DELETE FROM TABLE_NAME
命令,但它并没有释放已使用的空间。
如何强制执行截断?
我的postgres表占用了100%的内存
,我想对其进行截断。
当我使用 TRUNCATE TABLE TABLE_NAME
命令时,会出现以下错误:
ERROR: could not extend file "pg_tblspc/4815857/PG_11_201809051/16321": 设备上没有剩余空间。 HINT: 检查可用磁盘空间。
因此,我尝试了DELETE FROM TABLE_NAME
命令,但它并没有释放已使用的空间。
如何强制执行截断?
TRUNCATE
需要为表创建一个新的(空)文件,这可能导致您的问题。您可以DROP
表并重新创建。
另一种更繁琐的方法是
DELETE FROM table_name;
VACUUM table_name; -- no FULL!
VACUUM
命令通常不会缩小表的大小,但它会从表的末尾截断空页面。如果表是空的,那么所有的页面都会被清除。
delete from
删除数据后不运行vacuum
以回收空间呢? - Svetlin Zarevvacuum full
不需要额外的空间吗?据我所知,它会像复制表一样进行操作,交换它们并删除旧表。 - Łukasz Kamiński