Sometimes figuring out why your code isn't working properly is best done by diving into the database itself and looking for bottlenecks in its code. There are a few techniques available for this.
The standard GNU profiler,
gprof is available for most UNIX-like systems. If you compile the PostgreSQL server using the
--enable-profiling option, it will produce a
gmon.out file that can be given to
gprof for verbose profiling of the server internals.
The main issue with
gprof profiling and PostgreSQL is that it's known to have problems when tracing into functions in loadable libraries. Also, it's hard to combine the profiling information with a look at what the underlying operating systems is doing. These two limitations combine ...