Поиск медленных запросов

Задача

Необходимо найти долговыполняющиеся запросы к базе данных.

Решение

Необходимо включить вывод в лог запросов, длительность которых больше заданной длительности.

Для этого в файле postgresql.conf необходимо установить следующие параметры:

log_duration = on                # Включает логирование запросов
log_min_duration_statement = 1   # Устанавливает минимальное время (в миллисекундах) выполнения запроса, который попадает в лог

и перезагрузить сервер:

sudo service postgresql restart

Теперь, в зависимости от настроек, запросы длительностью более 1 миллисекунды буду выводиться в лог:

# tail /var/log/postgresql/postgresql-9.1-main.log

... skip ...

2012-10-31 09:58:27 YEKT LOG:  duration: 2.729 ms  statement: select name, setting from pg_settings where name ilike '%log%';

Дополнительная информация

PostgreSQL Documentation: Error Reporting and Logging

Print Friendly, PDF & Email

Добавить комментарий