Выбор ответа Middle EXPLAIN и оптимизация обновлено

С чего начать оптимизацию базы

Вопрос

База под нагрузкой, CPU 90%. Что даст наибольший эффект в первую очередь?

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

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Найти в pgstatstatements запросы с наибольшим totalexectime. Нагрузку создают не самые медленные запросы, а те, что дают наибольшее суммарное время: запрос на 5 мс, вызываемый 2000 раз в секунду, тяжелее ночного отчёта на минуту. pgstatstatements агрегирует статистику по нормализованным запросам.

Варианты ответа

  1. Найти в pg_stat_statements запросы с наибольшим total_exec_timeправильный ответ
  2. Найти самый долгий одиночный запрос за сутки и оптимизировать его
  3. Добавить индексы на все колонки, которые встречаются в WHERE
  4. Увеличить max_connections, чтобы запросы не стояли в очереди

Разбор

Нагрузку создают не самые медленные запросы, а те, что дают наибольшее суммарное время: запрос на 5 мс, вызываемый 2000 раз в секунду, тяжелее ночного отчёта на минуту. pg_stat_statements агрегирует статистику по нормализованным запросам. Индексы «на всё» замедлят запись. Больше соединений при загруженном CPU только усилит конкуренцию, обычно наоборот ставят пулер соединений.

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

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

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