【问题标题】:PostgreSQL: VACUUM FULL or CLUSTER?PostgreSQL:VACUUM FULL 还是 CLUSTER?
【发布时间】: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


【解决方案1】:

使用集群,直到 8.4 Vacuum full 被打破。如果需要很长时间,您不妨转储并重新加载表格。

【讨论】:

  • 我如何估计VACUUM 需要多长时间以及与CLUSTER 相比它有哪些缺点?似乎CLUSTER 在您负担得起并锁定表时获胜,因为当它完成时,它会保持最佳状态。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-15
  • 1970-01-01
  • 2011-12-04
  • 2018-04-23
  • 1970-01-01
相关资源
最近更新 更多