Index bloat — избыточный размер индекса из-за устаревших записей и неэффективно заполненных страниц. MVCC откладывает удаление старых версий; частые изменения и задержанная очистка усугубляют рост.
Что такое «проблема разрастания индексов» (index bloat) в PostgreSQL, почему она возникает из-за механики MVCC и как с ней бороться?
Index bloat — избыточный размер индекса из-за устаревших записей и неэффективно заполненных страниц. MVCC откладывает удаление старых версий; частые изменения и задержанная очистка усугубляют рост.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Index bloat — избыточный размер индекса из-за устаревших записей и неэффективно заполненных страниц. MVCC откладывает удаление старых версий; частые изменения и задержанная очистка усугубляют рост.
Сначала проверьте autovacuum, долгие транзакции и удерживаемые snapshots. VACUUM делает место повторно используемым, но не обязан уменьшать файл индекса. Измеренный сильный bloat может потребовать REINDEX, при подходящих условиях — CONCURRENTLY; операция всё равно требует ресурсов и планирования. Настройка fillfactor, уменьшение лишних индексов и возможность HOT-обновлений помогают снизить дальнейший рост. Большой индекс сам по себе ещё не доказательство bloat.
Источник: www.postgresql.org.