Вопрос с собеседования · Базы данных

Запрос стал работать медленно. С чего правильно начать разбор?

JuniorОптимизация запросовSQLPostgreSQL
Ещё спрашивают так:
  • С чего начать оптимизацию медленного запроса?
Коротко

Сначала измерить: EXPLAIN ANALYZE покажет, что реально происходит, вместо догадок. Затем — по находке: индекс, переписанный запрос, статистика, N+1.

  • Найти медленные запросы: pg_stat_statements, лог медленных запросов
  • В плане: Seq Scan большой таблицы, ошибка оценки строк, сортировка на диске
  • Проверить, не ждёт ли запрос блокировку

А ещё Изменение без измерения «до и после» — гадание

Подробно

План отвечает на ключевые вопросы: читается ли таблица целиком, используется ли индекс, каким способом выполняется соединение и насколько оценка числа строк совпадает с реальностью. Без него оптимизация превращается в перебор гипотез, а добавленные наугад индексы замедляют запись и занимают место, ничего не ускоряя. Порядок такой: воспроизвести проблему, посмотреть план, изменить одно, снова измерить.

Что хотят услышать

  • Измерение через план.
  • Где искать медленные запросы.
  • Типичные находки.

Частые ошибки

  • Добавлять индексы, не посмотрев план.
  • Оптимизировать запрос, который не является узким местом.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Посмотреть план через EXPLAIN и понять, что база делает на самом деле
  • ✗Увеличить объём оперативной памяти на сервере базы данных и перезапустить её
  • ✗Сразу добавить индексы на все колонки из WHERE и JOIN, а потом проверить скорость
  • ✗Переписать все соединения на подзапросы, они выполняются предсказуемее

Что спросят дальше

  • Чем EXPLAIN ANALYZE отличается от EXPLAIN?
  • Почему лишние индексы вредны?

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования