3

我有一张大表,因为很多行经常更新,所以索引膨胀。我也在删除大量行。

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

  • 真空,将死元组标记为空闲以供数据库重用,不会将空间返回给系统。
  • Vacuum Full,重写表以减少表膨胀,将空间返回给系统。
  • 重新索引,重写索引以减少索引膨胀,将空间返回给系统。
4

1 回答 1

2

由于 PostgreSQL 9.0 aVACUUM FULL应该以最佳方式返回磁盘空间(就像CLUSTER一样)。我在此处引用当前手册中的 9.0 版本说明:

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

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

于 2012-07-10T23:26:51.430 回答