Как профилировать базу данных PostgreSQL?

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

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

5 ответов

Решение

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

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

Для профилирования (не для просмотра в реальном времени того, что происходит сейчас, а для просмотра того, какие запросы занимают больше всего времени и т. Д.), Проверьте 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-Plugin или check_postgres.pl

Другие вопросы по тегам