Что такое «разрастание индексов» (index bloat) в PostgreSQL, почему оно возникает из-за механики MVCC и как с ним бороться?

Index bloat — лишний объём индекса из-за устаревших записей и неплотно заполненных страниц. MVCC сохраняет старые версии, а интенсивные изменения и задержки очистки усиливают разрастание.

Короткий ответ

Что ответить на собеседовании

Index bloat — лишний объём индекса из-за устаревших записей и неплотно заполненных страниц. MVCC сохраняет старые версии, а интенсивные изменения и задержки очистки усиливают разрастание.

Подробный разбор

Ответ с пояснениями

Index bloat — лишний объём индекса из-за устаревших записей и неплотно заполненных страниц. MVCC сохраняет старые версии, а интенсивные изменения и задержки очистки усиливают разрастание.

Не каждый UPDATE создаёт новые записи во всех индексах: HOT может избежать этого при подходящих условиях. Но долгие транзакции и недостаточная очистка мешают освобождению старых версий, а обычное освобождение места не всегда уменьшает файл индекса.

Проверьте объём, использование, workload и состояние autovacuum, устраните долгие удержания snapshot. При подтверждённом bloat применяют плановое перестроение, например поддерживаемый REINDEX CONCURRENTLY, с запасом места и контролем нагрузки. Не перестраивайте все индексы вслепую только из-за большого абсолютного размера.

Источник: www.postgresql.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее