Начните с pg_stat_statements, журналов медленных запросов и pg_stat_activity. Затем различите дорогой план, ожидание блокировок, I/O и чрезмерную частоту вызовов.
Как в PostgreSQL диагностируете медленные запросы в production? Какие инструменты используете?
Начните с pg_stat_statements, журналов медленных запросов и pg_stat_activity. Затем различите дорогой план, ожидание блокировок, I/O и чрезмерную частоту вызовов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Начните с pg_stat_statements, журналов медленных запросов и pg_stat_activity. Затем различите дорогой план, ожидание блокировок, I/O и чрезмерную частоту вызовов.
В pg_stat_statements смотрите calls, суммарное и среднее время, строки и буферные показатели. Среднее скрывает хвост задержек, поэтому сопоставляйте его с прикладными метриками.
План проверяйте на репрезентативных данных; EXPLAIN ANALYZE действительно выполняет запрос и может создать нагрузку или изменить данные. Для текущих зависаний полезны wait events и связи блокировок. Собирайте только необходимые диагностические сведения: параметры SQL могут содержать персональные данные и секреты. После оптимизации сравните результат при той же нагрузке.
Источник: www.postgresql.org.