Вопрос проверяет понимание причин деградации производительности БД и знание практических методов оптимизации запросов и схемы данных.
Проблемы производительности БД решаются анализом запросов, индексированием и оптимизацией схемы. Важно измерять, а не гадать — использовать планы выполнения и метрики. Часто узким местом становятся неэффективные запросы или отсутствие индексов. Также применяются кэширование и денормализация. Решения зависят от характера нагрузки.
Производительность БД — это результат взаимодействия запросов, индексов, схемы и нагрузки.
Оптимизация БД — это набор мер, направленных на снижение времени выполнения запросов и нагрузки на систему хранения данных.
Перед применением оптимизаций необходимо определить источник проблемы.
Первый шаг — понять, как БД исполняет запрос:
использование EXPLAIN / EXPLAIN ANALYZE
поиск Seq Scan, больших Nested Loop
анализ количества строк и стоимости операций
Индексы ускоряют доступ к данным, но имеют цену:
B-Tree для равенства и диапазонов
составные индексы под реальные запросы
удаление неиспользуемых индексов
выборка только нужных колонок
устранение N+1 запросов
корректные JOIN вместо подзапросов
кэширование (Redis, in-memory)
реплики для чтения
шардирование при высоких объёмах
индексы «на всё»
отсутствие лимитов
бизнес-логика в SQL без понимания плана
Оптимизация БД начинается с измерений. Наибольший эффект дают индексы и переписывание запросов, а не масштабирование «в лоб».