24.2. Регулярная переиндексация#

24.2. Регулярная переиндексация

24.2. Регулярная переиндексация

В некоторых ситуациях целесообразно периодически перестраивать индексы с помощью команды REINDEX или серии отдельных шагов перестроения.

Полностью пустые страницы индекса B-дерева освобождаются для повторного использования. Однако, все еще существует возможность неэффективного использования пространства: если все, кроме нескольких ключей индекса на странице были удалены, страница остается выделенной. Поэтому, использование шаблона, в котором большинство, но не все ключи в каждом диапазоне в конечном итоге удаляются, приведет к плохому использованию пространства. Для таких шаблонов использования рекомендуется периодическое переиндексирование.

Потенциал для раздутия в индексах не типа B-дерево плохо исследован. Рекомендуется периодический мониторинг физического размера индекса при использовании любого типа индекса, отличного от B-дерева.

Также, для индексов B-дерева, вновь построенный индекс немного быстрее доступен, чем тот, который был обновлен много раз, потому что логически смежные страницы обычно также физически смежны в новом построенном индексе. (Это соображение не применяется к не-B-деревянным индексам). Может быть целесообразно переиндексировать периодически, чтобы улучшить скорость доступа.

REINDEX можно использовать безопасно и легко во всех случаях. Эта команда по умолчанию требует блокировки ACCESS EXCLUSIVE, поэтому часто предпочтительнее выполнить ее с опцией CONCURRENTLY, которая требует только блокировки SHARE UPDATE EXCLUSIVE.