Я хочу профилировать (следить за) все действия, которые происходят в базе данных, которая находится в PostgreSQL.
Есть ли такая утилита, которая поможет мне в этом?
Я хочу профилировать (следить за) все действия, которые происходят в базе данных, которая находится в PostgreSQL.
Есть ли такая утилита, которая поможет мне в этом?
Для «наблюдения» я использую pgtop, программу, которая намеренно имитирует команду Unix 'top'.
На мой взгляд, «следить» и «профиль» - две совершенно разные задачи.
Для профилирования (не для просмотра в реальном времени того, что происходит прямо сейчас, а для того, чтобы увидеть, какие запросы занимают больше всего времени и т. Д.), Ознакомьтесь с pgFouine:
http://pgfouine.projects.postgresql.org/
Это позволит вам увидеть, какие запросы являются ресурсоемкими, и предпринять соответствующие действия: добавить недостающие индексы, переписать запросы, используя другие методы и т. Д.
С момента ответа ребра погас еще один инструмент профилирования pgbadger
. Вы можете найти его здесь: http://dalibo.github.io/pgbadger/.
вы можете получить очень подробный отчет и графики.
pgfouine больше не поддерживается, последнее обновление было в 2010 году.
Что ж, если вы смотрите на то, что происходит в отношении выбора, обновления, удаления и т. Д., В схеме pg_catalog
есть несколько представлений, я в основном использую pg_stat_user_tables
и pg_stat_user_indexes
, но их гораздо больше, все в pg_stat*
.
Также есть представление pg_stat_activity
, которое сообщает вам, что сейчас работает на вашем сервере.
Я собрал четыре плагина munin, которые используют user_tables и user_indexes, они доступны там
Взгляните на сценарий плагина Nagios или check_postgres.pl