Определение проблемных запросов в PostgreSQL - PullRequest
2 голосов
/ 17 марта 2011

Иногда база данных PostgreSQ, которую я поддерживаю, перегружена.Мне нужно точно определить точные запросы, которые вызывают перегрузку базы данных.Я создал вывод pgFounie за соответствующий период времени: http://bit.ly/f2aikx

В этом отчете есть строка
Пик запросов: 4 запроса / с в 2011-03-15 10:41:062011-03-15 10:44:18, 2011-03-15 10: 48: 25

Не ясно, указаны ли указанные временные метки для начала или конца пика.

1 Ответ

1 голос
/ 17 марта 2011

Я не уверен, что вопрос, но я сделаю несколько замечаний:

Метрика «Пик запроса» относится к трем отдельным секундам, когда вы видели пиковую пропускную способность4 запроса в секунду.

Вот как я хотел бы определить ваши проблемные запросы:

  1. Определите «перегруженный» для этого экземпляра.Это поможет вам определить причину проблемы.Давайте предположим, что перегруженный определяется как «медленные запросы»
  2. Изучите медленные запросы в выводе pgFouine.Он тщательно группирует их в разделе «Запросы, которые заняли больше всего времени (N)».Заглянув туда, вы также можете нажать «Показать примеры», чтобы увидеть несколько вопросов, которые вызывают у вас горе.
  3. Возьмите образец нескольких из этих запросов и выполните EXPLAIN ANALYZE для них, чтобы получить реальные планы выполнения.
  4. Посмотрите на другие планы, выполняющиеся одновременно.Это может вызывать конфликт ввода-вывода
  5. Анализировать планы самостоятельно или использовать http://explain.depesz.com/ для анализа ваших планов выполнения.Следите за вещами, такими как катушки таблиц.
  6. Настройте запросы или настройте параметры PostgreSQL соответствующим образом.
  7. Промойте и повторите

В долгосрочной перспективе я бы изменил настройки в pgFouineрегистрировать только те запросы, которые выполняются в течение более 100 мс.Вы можете сделать это, используя параметр log_min_duration_statement в файле postgresql.conf.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...