Нужно ли переиндексацию после заполнения вакуума на Postgres 9.4

Я использую Postgres 9.4.

Я просто пробежал вакуум. Я читал о различиях между вакуумом и вакуумом, и много думал, если я должен запустить вакуум или вакуум. Насколько я могу судить, мне нужен вакуум, и размер моего db уменьшился с 48 до 24 ГБ.

Стали бы старые индексы устаревать после полного заполнения вакуума и мне нужно запустить reindex?

Я провел "вакуумный подробный подробный анализ", поэтому анализ выполняется вместе с вакуумом.

Я читал в нескольких местах, что для Postgres > 9.0 мне не нужен reindex после полного заполнения вакуума, но я хочу быть уверенным, что это так.

Ответ 1

A REINDEX сразу после VACUUM FULL бесполезно, потому что VACUUM FULL сам перестраивает индексы.

Это упоминается в документации 9.4 в Восстановление дискового пространства:

... чтобы вернуть лишнее дисковое пространство, которое он занимает, вам нужно будет использовать VACUUM FULL или, альтернативно, CLUSTER или одна из таблиц-переписывающих варианты ALTER TABLE. Эти команды переписывают всю новую копию таблицы и построить для него новые индексы.

Вы правы, что это было не так, как до версии 9.0, у которой VACUUM FULL переопределялось по-разному.

До версии 8.4 в справочном документе для VACUUM говорилось о необходимости переиндексации:

Опция FULL не уменьшает индексы; периодический REINDEX по-прежнему рекомендуемые. На самом деле, часто быстрее отбрасывать все индексы, VACUUM FULL и воссоздайте индексы.

Но это предостережение теперь устарело.