【发布时间】:2020-10-29 22:05:02
【问题描述】:
我的磁盘空间快用完了,因为一个查询试图更新一个巨大表中的每一行。我没有足够的空间来存放CLUSTER(尽管如果我先删除索引然后重新创建它们,它几乎不适合)。
我如何估计VACUUM 需要多长时间? VACUUM FULL 怎么样?三者(CLUSTER)在运行时间和磁盘使用方面的比较如何?
这是 PostgreSQL 8.3。
【问题讨论】:
-
无论如何,
VACUUM不会回收空间。请参阅postgresql.org/docs/current/routine-vacuuming.html(搜索“回收”)。重新创建表所需的磁盘空间没有区别:VACUUM FULL和CLUSTER都需要制作完整副本。如果你确实有一个超大的表,你应该使用分区(参见 TimescaleDB)。然后你可以单独清理每个分区。
标签: postgresql