【问题标题】:Do I need to reindex after vacuum full on Postgres 9.4在 Postgres 9.4 上真空满后我需要重新索引吗
【发布时间】:2015-06-23 17:33:03
【问题描述】:

我正在使用 Postgres 9.4。

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

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

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

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

【问题讨论】:

标签: postgresql vacuum


【解决方案1】:

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

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

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

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

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

FULL 选项不收缩索引;一个周期性的 REINDEX 仍然是 受到推崇的。实际上,删除所有索引通常更快,VACUUM FULL,然后重新创建索引。

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

【讨论】:

    猜你喜欢
    • 2018-09-29
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    • 2011-06-11
    • 2016-07-31
    • 2011-05-06
    相关资源
    最近更新 更多