Перейти к основному содержимому

Регулярная перезапись индекса

примечание

Эта страница переведена при помощи нейросети GigaChat.

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

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

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

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

Команда REINDEX безопасна и проста в использовании. По умолчанию она блокирует объект эксклюзивно (ACCESS EXCLUSIVE), поэтому часто эффективнее использовать опцию CONCURRENTLY, которая требует лишь блокировки SHARE UPDATE EXCLUSIVE.