31
votes

I want to profile (keep an Eye on) all the activities that goes on in a Database which is in PostgreSQL.

Is there any such utility which will help me do this?

5

5 Answers

36
votes

"Keep an eye on" and "profile" are two quite different tasks in my view.

For profiling (not a live view on what's going on right now, but to see which queries take most time etc), check out pgFouine:

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

This will let you see which queries are resource intensive, and take appropriate action: Add missing indexes, rewrite queries using other techiques etc.

21
votes

For "keeping an eye", I use pgtop, a program which deliberately mimics Unix 'top' command.

10
votes

Since rebra answer another profiling tool pgbadger went out. You can find it here: http://dalibo.github.io/pgbadger/

you can get a very detailed report and graphs.

pgfouine is not maintained anymore, last update was in 2010.

6
votes

Well, if you're looking at what's going on, regarding selects, updates, deletes, and so on, there are a few views in the pg_catalog schema, I mainly use pg_stat_user_tables and pg_stat_user_indexes but there are many more, all within pg_stat*.

There also is the pg_stat_activity view which tells you what's running on your server right now.

I've hacked together four munin plugins that uses the user_tables and user_indexes, they're available there