在Postgres 9.4

时间:2015-06-23 17:33:03

标签: postgresql vacuum

我正在使用Postgres 9.4。

我刚跑完真空。我读到了真空和真空之间的差异,如果我应该使用真空或真空吸尘器,我会考虑很多。据我所知,我需要真空充满,我的数据库大小从48 GB下降到24 GB。

在真空充满后,旧索引会不会过时,我是否需要运行reindex?

我跑了"真空完整的详细分析",所以分析是在真空充满的情况下完成的。

我在几个地方看过Postgres> 9.0,真空吸尘后我不需要重新索引,但我想确定是这样的。

1 个答案:

答案 0 :(得分:38)

REINDEX之后的VACUUM FULL 无用,因为VACUUM FULL本身会重建索引。

Recovering Disk Space中的9.4文档中提到了这一点:

  

...要收回它占用的多余磁盘空间,您需要使用   VACUUM FULL,或者CLUSTER或其中一个表重写   ALTER TABLE的变种。这些命令重写了一个完整的新副本   该表和为其构建新索引

你是正确的,在版本9.0之前并非如此,VACUUM FULL重新实现了不同的版本。

最高版本8.4,VACUUM的参考文档提到了重新索引的必要性:

  

FULL选项不缩小索引;定期的REINDEX仍然存在   推荐的。实际上,删除所有索引VACUUM通常会更快   FULL,并重新创建索引。

但是这个警告现在已经过时了。