在 Postgres 9.4 上 vacuum full 后我需要重新索引吗
Do I need to reindex after vacuum full on Postgres 9.4
我正在使用 Postgres 9.4。
我刚刚 运行 真空满了。我了解了 vacuum 和 vacuum full 之间的区别,并且考虑了很多我应该 运行 vacuum 还是 vacuum full。据我所知,我需要 vacuum full 并且我的数据库大小从 48 GB 下降到 24 GB。
旧索引在 vacuum full 后会过时吗?我需要 运行 重建索引吗?
我运行"vacuum full verbose analyze",所以分析是在真空满的情况下完成的。
我在几个地方读到,对于 Postgres > 9.0,我不需要在 vacuum full 后重新索引,但我想确定是这样的。
紧跟在 VACUUM FULL
之后的 REINDEX
没用 因为 VACUUM FULL
本身会重建索引。
这个在Recovering Disk Space的9.4文档中有提到:
...to reclaim the excess disk space it occupies, you will need to use
VACUUM FULL, or alternatively CLUSTER or one of the table-rewriting
variants of ALTER TABLE. These commands rewrite an entire new copy of
the table and build new indexes for it.
你说得对,在 9.0 版之前情况并非如此,VACUUM FULL
以不同的方式重新实现。
到 8.4 版,VACUUM 的参考文档提到需要重建索引:
The FULL option does not shrink indexes; a periodic REINDEX is still
recommended. In fact, it is often faster to drop all indexes, VACUUM
FULL, and recreate the indexes.
但是这个警告现在已经过时了。
我正在使用 Postgres 9.4。
我刚刚 运行 真空满了。我了解了 vacuum 和 vacuum full 之间的区别,并且考虑了很多我应该 运行 vacuum 还是 vacuum full。据我所知,我需要 vacuum full 并且我的数据库大小从 48 GB 下降到 24 GB。
旧索引在 vacuum full 后会过时吗?我需要 运行 重建索引吗?
我运行"vacuum full verbose analyze",所以分析是在真空满的情况下完成的。
我在几个地方读到,对于 Postgres > 9.0,我不需要在 vacuum full 后重新索引,但我想确定是这样的。
紧跟在 VACUUM FULL
之后的 REINDEX
没用 因为 VACUUM FULL
本身会重建索引。
这个在Recovering Disk Space的9.4文档中有提到:
...to reclaim the excess disk space it occupies, you will need to use VACUUM FULL, or alternatively CLUSTER or one of the table-rewriting variants of ALTER TABLE. These commands rewrite an entire new copy of the table and build new indexes for it.
你说得对,在 9.0 版之前情况并非如此,VACUUM FULL
以不同的方式重新实现。
到 8.4 版,VACUUM 的参考文档提到需要重建索引:
The FULL option does not shrink indexes; a periodic REINDEX is still recommended. In fact, it is often faster to drop all indexes, VACUUM FULL, and recreate the indexes.
但是这个警告现在已经过时了。