我正在使用 Postgres 9.4。
我刚满真空。我阅读了真空和真空满真空之间的区别,并考虑了很多是否应该运行真空或真空满。据我所知,我需要完全真空,我的数据库大小从 48 GB 下降到 24 GB。
真空充满后旧索引是否会过时,我是否需要运行重新索引?
我运行了“vacuum full verbose analyze”,所以分析是与 Vacuum full 一起完成的。
我在几个地方读到,对于 Postgres > 9.0,我不需要在真空满后重新索引,但我想确定是这种情况。
我正在使用 Postgres 9.4。
我刚满真空。我阅读了真空和真空满真空之间的区别,并考虑了很多是否应该运行真空或真空满。据我所知,我需要完全真空,我的数据库大小从 48 GB 下降到 24 GB。
真空充满后旧索引是否会过时,我是否需要运行重新索引?
我运行了“vacuum full verbose analyze”,所以分析是与 Vacuum full 一起完成的。
我在几个地方读到,对于 Postgres > 9.0,我不需要在真空满后重新索引,但我想确定是这种情况。
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 并重新创建索引通常更快。
但是这个警告现在已经过时了。