36

我正在使用 Postgres 9.4。

我刚满真空。我阅读了真空和真空满真空之间的区别,并考虑了很多是否应该运行真空或真空满。据我所知,我需要完全真空,我的数据库大小从 48 GB 下降到 24 GB。

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

我运行了“vacuum full verbose analyze”,所以分析是与 Vacuum full 一起完成的。

我在几个地方读到,对于 Postgres > 9.0,我不需要在真空满后重新索引,但我想确定是这种情况。

4

1 回答 1

60

REINDEX紧跟在 a 之后的AVACUUM FULL没有,因为VACUUM FULL它自己会重建索引。

这在Recovering Disk Space的 9.4 文档中有所提及:

...要回收它占用的多余磁盘空间,您将需要使用 VACUUM FULL,或者 CLUSTER 或 ALTER TABLE 的表重写变体之一。这些命令重写表的全新副本并为其构建新索引

您说得对,在 9.0 版之前情况并非如此,它以 VACUUM FULL不同的方式重新实现。

直到 8.4 版, VACUUM的参考文档提到需要重新索引:

FULL 选项不收缩索引;仍然建议定期 REINDEX。事实上,删除所有索引、VACUUM FULL 并重新创建索引通常更快。

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

于 2015-06-23T20:31:13.270 回答