Регулярная перезапись индекса
Эта страница переведена при помощи нейросети GigaChat.
В ряде случаев полезно периодически повторять создание индексов с помощью команды REINDEX или выполнять серию пошаговых перестроек.
Полностью опустевшие страницы B-дерева освобождаются для повторного использования, однако, если большая часть, но не все ключи на странице удалены, страница продолжает занимать место. Поэтому модели нагрузки, предполагающие частичное удаление большинства ключей, приводят к неоптимальному расходованию пространства. В таких ситуациях рекомендуется регулярно выполнять переиндексацию.
Вопрос чрезмерного роста размеров неблокируемых индексов B-дерева пока слабо исследован. Целесообразно постоянно мониторить физический размер индекса при использовании любого типа индекса, отличного от B-дерева.
Кроме того, свежепостроенный индекс B-дерева обычно чуть быстрее старого, многократно обновлявшегося, так как логически соседние страницы в недавно созданном индексе чаще оказываются физически близкими. Для повышения производительности доступа можно периодически повторять переиндексацию.
Команда REINDEX безопасна и проста в использовании. По умолчанию она блокирует объект эксклюзивно (ACCESS EXCLUSIVE
), поэтому часто эффективнее использовать опцию CONCURRENTLY
, которая требует лишь блокировки SHARE UPDATE EXCLUSIVE
.