正确的Postgres维护顺序

时间:2012-07-10 23:14:32

标签: database postgresql indexing maintenance vacuum

我有一张大桌子,因为很多行经常更新,因此会遭遇索引膨胀。我也在删除大量的行。

执行以下任务以恢复磁盘空间的正确顺序是什么?

  • 真空,将死元组标记为免费用于数据库重用,不返回 空间到系统。
  • 真空充满,重写表减少表膨胀, 将空间返回给系统。
  • 重新索引,重写索引减少索引 膨胀,将空间归还给系统。

1 个答案:

答案 0 :(得分:2)

由于PostgreSQL 9.0 VACUUM FULL应该最佳地返回磁盘空间(就像CLUSTER那样)。我从当前手册here中引用9.0的发行说明:

  

VACUUM FULL的新实施。此命令现在重写   整个表和索引,而不是将单个行移动到   紧凑的空间。在大多数情况下,它实质上更快,而不再是   导致指数膨胀。

请注意,通常不需要甚至不建议运行VACUUM FULL。如果您从数据页中删除HOT更新的所有摆动空间,它可能会减慢UPDATE。