По порядку Middle EXPLAIN и оптимизация обновлено

Порядок разбора медленного запроса

Вопрос

Расставь шаги разбора медленного запроса на проде в правильном порядке.

Попробуйте сами

Расставьте шаги по порядку стрелками.

  1. 1
    Выбрать исправление: индекс, переписанный запрос или обновлённая статистика
  2. 2
    Снова снять план и убедиться, что узкое место ушло
  3. 3
    Найти запрос с наибольшим суммарным временем в pg_stat_statements
  4. 4
    Снять EXPLAIN (ANALYZE, BUFFERS) с реальными параметрами на реплике или копии
  5. 5
    Выкатить и сверить метрики запроса в pg_stat_statements после релиза
  6. 6
    Найти узел, где уходит больше всего времени, и сравнить оценки строк с фактом
Показать ответ и разбор

Коротко

Сначала выбирают, что чинить: суммарное время в pgstatstatements показывает, какой запрос реально нагружает базу (частый запрос на 5 мс может стоить больше редкого на 2 секунды). Затем план с фактическими цифрами, причём на реалистичных данных и параметрах: на пустой dev-базе план другой.

Правильный порядок

  1. 1
    Найти запрос с наибольшим суммарным временем в pg_stat_statements
  2. 2
    Снять EXPLAIN (ANALYZE, BUFFERS) с реальными параметрами на реплике или копии
  3. 3
    Найти узел, где уходит больше всего времени, и сравнить оценки строк с фактом
  4. 4
    Выбрать исправление: индекс, переписанный запрос или обновлённая статистика
  5. 5
    Снова снять план и убедиться, что узкое место ушло
  6. 6
    Выкатить и сверить метрики запроса в pg_stat_statements после релиза

Разбор

Сначала выбирают, что чинить: суммарное время в pg_stat_statements показывает, какой запрос реально нагружает базу (частый запрос на 5 мс может стоить больше редкого на 2 секунды). Затем план с фактическими цифрами, причём на реалистичных данных и параметрах: на пустой dev-базе план другой. В плане ищут самый дорогой узел и расхождения оценок с фактом, они указывают на причину. Исправление проверяют повторным планом и только потом выкатывают, а после релиза сверяют метрики.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме