Проверяет понимание влияния создания индексов на производительность БД и эксплуатационные риски.
Добавление индекса на таблицу с 1 млн+ записей может заблокировать таблицу на длительное время, вызвать деградацию производительности из-за нагрузки на диск/CPU и потребовать значительного объема свободного дискового пространства (до 120% от размера данных).
Основные проблемы:
Блокировка таблицы:
При создании индекса некоторые СУБД (например, MySQL < 5.6) блокируют таблицу на запись, что останавливает работу приложения.
В PostgreSQL даже с CONCURRENTLY возможны конфликты с параллельными транзакциями.
Дисковые ресурсы:
Индекс занимает физическое место (например, 1 ГБ для таблицы в 5 ГБ).
Требует 2-3x свободного места для временных операций сортировки.
Производительность:
Интенсивное чтение данных и сортировка создают нагрузку на CPU и I/O.
В облачных БД (AWS RDS) может вызвать исчерпание IOPS.
Решение:
-- PostgreSQL: безопасное создание индекса без длительной блокировки
CREATE INDEX CONCURRENTLY idx_books_author_id ON books (author_id);Рекомендации:
Выполнять в часы минимальной нагрузки.
Мониторить прогресс (в PostgreSQL через pg_stat_progress_create_index).
В MySQL использовать ALGORITHM=INPLACE.
Вывод: Всегда оценивайте влияние индексации через EXPLAIN и тестируйте на staging-среде.