Как профилировать базу данных PostgreSQL? - PullRequest
29 голосов
/ 13 декабря 2008

Я хочу профилировать (следить) за всеми действиями в базе данных, которая находится в PostgreSQL.

Есть ли такая утилита, которая поможет мне сделать это?

Ответы [ 5 ]

36 голосов
/ 13 декабря 2008

«Следить за» и «профиль» - две совершенно разные задачи, на мой взгляд.

Для профилирования (не для просмотра в реальном времени того, что происходит сейчас, а для просмотра того, какие запросы занимают больше всего времени и т. Д.), Посмотрите pgFouine:

http://pgfouine.projects.postgresql.org/

Это позволит вам увидеть, какие запросы являются ресурсоемкими, и предпринять соответствующие действия: добавить недостающие индексы, переписать запросы, используя другие методы и т. Д.

21 голосов
/ 14 декабря 2008

Для "слежки" я использую pgtop , программу, которая намеренно имитирует команду Unix 'top'.

6 голосов
/ 12 июня 2014

Поскольку ребра ответила другим профилирующим инструментом, pgbadger вышел. Вы можете найти это здесь: http://dalibo.github.io/pgbadger/

Вы можете получить очень подробный отчет и графики.

pgfouine больше не поддерживается, последнее обновление было в 2010 году.

4 голосов
/ 13 декабря 2008

Что ж, если вы смотрите на то, что происходит, в том, что касается выбора, обновления, удаления и т. Д., В схеме pg_catalog есть несколько представлений, я в основном использую pg_stat_user_tables и pg_stat_user_indexes, но еще много, все в пределах pg_stat*.

Существует также представление pg_stat_activity, которое сообщает вам, что работает на вашем сервере прямо сейчас.

Я взломал четыре подключаемых модуля munin, которые используют user_tables и user_indexes, они доступны там

2 голосов
/ 13 декабря 2008
...