Что такое фрагментация индекса и как она сказывается на производительности? Индекс — структура базы данных для ускорения поиска Фрагментация — физическая рассредоточенность индексных данных на диске Виды: внутренняя (свободное место внутри страниц), внешняя (нарушенный порядок размещения страниц) Последствия: больше операций чтения и менее эффективное использование кэша Замедляет выполнение запросов, вставку и обновление данных Устраняется реорганизацией или перестроением индекса Контроль фрагментации необходим для высокой скорости доступа к данным и эффективного использования ресурсов БД
Что такое фрагментация индекса и как она сказывается на производительности?
Что такое фрагментация индекса и как она сказывается на производительности? Индекс — структура базы данных для ускорения поиска Фрагментация — физическая рассредоточенность индексных данных на диске Виды: внутренняя…
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Что такое фрагментация индекса и как она сказывается на производительности?
- Индекс — структура базы данных для ускорения поиска
- Фрагментация — физическая рассредоточенность индексных данных на диске
- Виды: внутренняя (свободное место внутри страниц), внешняя (нарушенный порядок размещения страниц)
- Последствия: больше операций чтения и менее эффективное использование кэша
- Замедляет выполнение запросов, вставку и обновление данных
- Устраняется реорганизацией или перестроением индекса
- Контроль фрагментации необходим для высокой скорости доступа к данным и эффективного использования ресурсов БД
Подробный ответ
Основной ответ
Фрагментация индекса возникает, когда логический порядок индексных ключей перестаёт соответствовать физическому расположению данных на диске. Иными словами, страницы индекса или содержащаяся в них информация оказываются распределены неравномерно, из-за чего чтение становится менее эффективным. В результате запросы выполняются медленнее, особенно при сканировании индекса: возрастает число операций ввода-вывода, а эффективность кэширования снижается.
Ключевые моменты
- Выделяют два типа фрагментации: внутреннюю, связанную с незаполненными участками страниц индекса, и внешнюю, при которой нарушается физическая последовательность страниц. Внутренняя фрагментация уменьшает объём данных, размещаемых на странице, а внешняя провоцирует дополнительные случайные обращения к диску.
- При фрагментации увеличивается latency при выполнении выборок, прежде всего в больших таблицах, где последовательное чтение имеет большое значение. Например, даже на SSD случайный доступ обходится дороже последовательного.
- Снижение производительности затрагивает не только чтение. При изменении индекса операции вставки и удаления вызывают более частые перестроения, из-за чего уменьшается пропускная способность системы.
Практический контекст
В PostgreSQL 14+ и Microsoft SQL Server фрагментацию обычно устраняют с помощью REINDEX или ALTER INDEX REBUILD. Для MySQL с InnoDB подходящим вариантом может быть OPTIMIZE TABLE. В крупных системах с высоким SLA фрагментацию важно регулярно контролировать — например, через pg_stat_user_indexes или DMV в SQL Server — и запускать перестроение индексов в период сниженной нагрузки. Это помогает поддерживать скорость запросов и уменьшать IO.