Как профилировать базу данных 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, они доступны там