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

Чем EXPLAIN ANALYZE отличается от обычного EXPLAIN?

MiddleОптимизация запросовPostgreSQL
Ещё спрашивают так:
  • Что показывает EXPLAIN ANALYZE?
Коротко

EXPLAIN — прогноз оптимизатора; EXPLAIN ANALYZE — запрос выполняется, и видны фактические строки, время каждого узла и число повторений.

  • Сравнивать оценку строк с фактом — расхождение указывает на статистику
  • BUFFERS — сколько страниц из кэша и с диска
  • ANALYZE реально выполняет UPDATE/DELETE — оборачивать в транзакцию с ROLLBACK

А ещё Время с ANALYZE немного выше из-за измерений

Подробно

Самое ценное в фактическом плане — расхождение между ожидаемым и реальным числом строк. Если планировщик рассчитывал на десять строк, а пришло сто тысяч, значит статистика устарела или оценка селективности неверна, и именно отсюда берутся неудачные соединения вложенными циклами. Важное предупреждение по эксплуатации: EXPLAIN ANALYZE действительно выполняет запрос, поэтому для INSERT, UPDATE и DELETE его запускают внутри транзакции с последующим откатом. Обновление статистики — отдельная команда ANALYZE, и путать её с этим режимом не стоит.

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

  • Прогноз против факта.
  • Что смотреть в выводе.
  • Осторожность с изменяющими запросами.

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

  • Запустить EXPLAIN ANALYZE на изменяющем запросе в бою без транзакции.
  • Смотреть только на итоговую стоимость, игнорируя расхождение оценок и факта.

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

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

Показать варианты и ответ
  • ✗Разница только в формате вывода
  • ✓ANALYZE реально выполняет запрос и показывает фактические время и число строк
  • ✗EXPLAIN ANALYZE работает только с SELECT
  • ✗ANALYZE пересобирает статистику таблицы перед построением плана, поэтому оценки точнее

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

  • О чём говорит расхождение между rows и actual rows?
  • Почему nested loop с неверной оценкой особенно опасен?

Разбор темы

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

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

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

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

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